我正在尝试创建一个读取名称和数字的程序,该程序用空格分隔并将输入分配给结构。
typedef struct {
char name [20];
char number [12];
} Entry;
scanf
函数在while循环中,如果输入为"."
while(strcmp(e.name,".")!=0) {
scanf("%s %s", e.name, e.number );
}
但是使用上面的代码意味着用户必须输入两个句点。我想知道是否有人建议如何在第一次"."
之后让它从循环中断开。
答案 0 :(得分:2)
我建议您将scanf()
替换为fgets()
。检查man page是否为syantax。
这样,将输入与.
进行比较(在退出条件的情况下)将完成这项工作。
不要忘记处理将被\n
fgets()
答案 1 :(得分:2)
使用两个条件:
while(1) { //infinite loop
scanf("%19s", e.name);
getchar(); //remove the \n from the stdin
if(strcmp(e.name,".")==0)
break;
scanf("%11s", e.number);
getchar(); //remove the \n from the stdin
if(strcmp(e.number,".")==0)
break;
}
19和11告诉scanf
扫描最多这么多字符,然后在最后添加\0
。