Dogelike 发表于 2020-12-19 16:58:59

C语言编程题求解答

制作一个简单的通讯录,输入姓名和电话,将其保存在结构体数组中;通过输入姓名,可查询到某个人的电话;如果姓名为空则列出所有人的姓名和电话。
其他的都会做,就是“如果姓名为空则列出所有人的姓名和电话”这一点不会做,我设定的判定条件是if(strlen(A)==0),但在程序运行输入的时候单纯按回车好像并不会判断字符串为空,求解该怎么弄

Dogelike 发表于 2020-12-19 17:12:22

附上代码
#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 17:53:10

本帖最后由 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")                           ;
      }
}

Dogelike 发表于 2020-12-21 19:13:54

jackz007 发表于 2020-12-19 17:53
楼主的代码我给做了修改,谨供楼主参考

老哥强,受教了
页: [1]
查看完整版本: C语言编程题求解答