辞树 发表于 2021-11-26 22:17:53

找错

那能不能再请教一个问题呀, 定义结构体用于存放人员的姓名和电话号码(11位数字)。从键盘输入10个同学姓名(以#结束输入)和电话号码。然后输入某个姓名,查找该人的电话号码。
#include<stdio.h>
struct classmate
{
    char name;
    intmember;
   
};

main()
{struct classmate man;
   struct classmate t;
   int i;
   char str;
   
      
   
       for(i=0;getchar()!='#';i++)
       {   scanf("%s%d",&man.name,&man.member) ;
            
                
           }
           printf("需查找的对象:");
          
           gets(str);
           for(i=0;;i++)
           {
             
              if(man.name==str)
              {printf("%d",man.member); break;}
      }
             
          
   
}

能不能运行一下找找错误呀,大佬,我发了这个好几个贴都发不出来

人造人 发表于 2021-11-27 10:04:15

错的有点多

#include <stdio.h>
#include <string.h>

struct classmate {
    char name;
    //int member;
    int member;
};

// main()
int main(void) {
    struct classmate man;
    // struct classmate t;
    int i;
    char str;

    // for(i=0;getchar()!='#';i++)
    //for(i = 0; getchar() != '#'; i++) {
    for(i = 0; ; i++) {
      int ch = getchar();
      if(ch == '\n') ch = getchar();
      if(ch == '#') break;
      ungetc(ch, stdin);
      //scanf("%s%d", &man.name, &man.member);
      scanf("%s%d", man.name, &man.member);
    }
    printf("需查找的对象:");

    // gets(str);
    scanf("%s", str);
    for(i = 0; ; i++) {

      //if(man.name == str) {
      if(!strcmp(man.name, str)) {
            //printf("%d", man.member);
            printf("%d\n", man.member);
            break;
      }
    }

    return 0;
}

辞树 发表于 2021-11-27 13:56:17

人造人 发表于 2021-11-27 10:04
错的有点多

谢谢您!

辞树 发表于 2021-11-27 14:11:05

人造人 发表于 2021-11-27 10:04
错的有点多

yi 111111111111
er 222222222222
#
需查找的对象:yi
-558038585

大佬大佬,为什么结果是这个样子呀{:10_266:}

人造人 发表于 2021-11-27 14:26:05

辞树 发表于 2021-11-27 14:11
大佬大佬,为什么结果是这个样子呀

#include <stdio.h>
#include <string.h>

struct classmate {
    char name;
    //int member;
    long member;
};

// main()
int main(void) {
    struct classmate man;
    // struct classmate t;
    int i;
    char str;

    // for(i=0;getchar()!='#';i++)
    //for(i = 0; getchar() != '#'; i++) {
    for(i = 0; ; i++) {
      int ch = getchar();
      if(ch == '\n') ch = getchar();
      if(ch == '#') break;
      ungetc(ch, stdin);
      //scanf("%s%d", &man.name, &man.member);
      scanf("%s%ld", man.name, &man.member);
    }
    printf("需查找的对象:");

    // gets(str);
    scanf("%s", str);
    for(i = 0; ; i++) {

      //if(man.name == str) {
      if(!strcmp(man.name, str)) {
            //printf("%d", man.member);
            printf("%ld\n", man.member);
            break;
      }
    }

    return 0;
}

辞树 发表于 2021-11-27 14:31:04

人造人 发表于 2021-11-27 14:26


是数据溢出了吗

人造人 发表于 2021-11-27 14:41:50

辞树 发表于 2021-11-27 14:31
是数据溢出了吗

辞树 发表于 2021-11-27 14:43:00

人造人 发表于 2021-11-27 14:26


大佬,我刚刚试了一下,只有double类型的才可以输入11位号码{:10_254:}

人造人 发表于 2021-11-27 14:48:49

辞树 发表于 2021-11-27 14:43
大佬,我刚刚试了一下,只有double类型的才可以输入11位号码

也就是说,换成 long 的这个代码在你那边还是不行?
在我这边换成 long 就可以了

long 不行,那就换成 long long 试试
#include <stdio.h>
#include <string.h>

struct classmate {
    char name;
    //int member;
    long long member;
};

// main()
int main(void) {
    struct classmate man;
    // struct classmate t;
    int i;
    char str;

    // for(i=0;getchar()!='#';i++)
    //for(i = 0; getchar() != '#'; i++) {
    for(i = 0; ; i++) {
      int ch = getchar();
      if(ch == '\n') ch = getchar();
      if(ch == '#') break;
      ungetc(ch, stdin);
      //scanf("%s%d", &man.name, &man.member);
      scanf("%s%lld", man.name, &man.member);
    }
    printf("需查找的对象:");

    // gets(str);
    scanf("%s", str);
    for(i = 0; ; i++) {

      //if(man.name == str) {
      if(!strcmp(man.name, str)) {
            //printf("%d", man.member);
            printf("%lld\n", man.member);
            break;
      }
    }

    return 0;
}

辞树 发表于 2021-11-27 14:56:34

人造人 发表于 2021-11-27 14:48
也就是说,换成 long 的这个代码在你那边还是不行?
在我这边换成 long 就可以了



&#127383;了,谢谢大佬{:7_113:}
页: [1]
查看完整版本: 找错