这是为了执行电话簿获取姓名和电话号码的功能。对于要求的姓名,必须打印他们的电话号码。最后一行无限打印,因为我无法检测到输入的结束。我使用了\n
,' '
和" "
,但没有任何效果。 帮助!
#include <stdio.h>
struct ph_book{
char name[100000];
double ph;
}p[20];
int main() {
char temp[100000],ex[100000];
int n,i,flag=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s",p[i].name) ;
scanf("%lf",&p[i].ph);
}
scanf("%s",temp);
while(temp[0]!='\n'){
flag=0;
for(i=0;i<n;i++){
if(strcmp(temp,p[i].name)==0){
printf("%s=%.lf\n",p[i].name,p[i].ph);
flag=1;
break;
}
}
if (flag==0){
printf("Not found\n");
}
strcpy(ex,temp);
scanf("%s",temp);
if (strcmp (temp, "\n") == 0)
break;
}
return 0;
}/* Enter your code here. Read input from STDIN. Print output to STDOUT */
答案 0 :(得分:0)
&#34; \ n&#34;不是scanf
函数的输入字符串的一部分
以下代码不会进入中断(条件始终为FALSE)。
if (strcmp (temp, "\n") == 0)
break;
如果您希望通过空字符串终止输入(当用户按下回车键时),
以下应该有效:
scanf
替换为gets
(或者更好地使用安全版本:gets_s
)。示例代码:
gets_s(temp, sizeof(temp)); //Instead of scanf("%s",temp);
while (temp[0] != 0)
{
strcpy(ex, temp);
gets_s(temp, sizeof(temp)); //Instead of scanf("%s",temp);
if (temp[0] == 0)
break;
}