C语言编程题求解答
制作一个简单的通讯录,输入姓名和电话,将其保存在结构体数组中;通过输入姓名,可查询到某个人的电话;如果姓名为空则列出所有人的姓名和电话。其他的都会做,就是“如果姓名为空则列出所有人的姓名和电话”这一点不会做,我设定的判定条件是if(strlen(A)==0),但在程序运行输入的时候单纯按回车好像并不会判断字符串为空,求解该怎么弄 附上代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
struct address
{
char Name;
int Tele;
};
void main()
{
struct address a;
int i;
for(i=0;i<N;i++){
scanf("%s%d",&a.Name,&a.Tele);
}
printf("请输入要查询的姓名:");
char *A;
A=(char *)malloc(sizeof(scanf("%s",A)));
scanf("%s",A);
printf("查询结果为:\n");
for(i=0;i<N;i++){
if(strcmp(a.Name,A)==0){
printf("%s\t%d\n",a.Name,a.Tele);
}
}
if(strlen(A)==0){
for(i=0;i<N;i++){
printf("%s\t%d\n",a.Name,a.Tele);
}
}
} 本帖最后由 jackz007 于 2020-12-19 18:14 编辑
char s ;
fgets(s , 24 , stdin) ;
s = '\0' ;
if(strlen(s)) {
<s 非空>
} else {
<s 为空>
}
楼主的代码我给做了修改,谨供楼主参考
#include <stdio.h>
#include <string.h>
#define N 3
struct address
{
char Name ;
unsigned long longTele ;
} ;
int main(void)
{
struct address a ;
int f , i , j , k ;
char s ;
for(i = 0 ; i < N ;) {
printf("输入姓名 : ") ;
fflush(stdin) ;
fgets(a . Name , 24 , stdin) ;
a . Name . Name) - 1] = '\0' ;
if(strlen(a . Name)) {
printf("输入号码 : ") ;
scanf("%I64u" , & a . Tele) ;
i ++ ;
} else {
for(j = 0 ; j < i ; j ++) {
printf("%s , %I64u\n" , a . Name , a . Tele) ;
}
}
}
printf("请输入要查询的姓名:") ;
fflush(stdin) ;
fgets(s , 24 , stdin) ;
s = '\0' ;
if(strlen(s)) {
printf("查询结果为:\n") ;
for(f = i = 0 ; i < N ; i ++) {
if(! strcmp(s , a . Name)) {
printf("%s , %I64u\n" , a . Name , a . Tele) ;
f = 1 ;
break ;
}
}
if(! f) printf("没有找到相关记录。\n") ;
}
} jackz007 发表于 2020-12-19 17:53
楼主的代码我给做了修改,谨供楼主参考
老哥强,受教了
页:
[1]