这是我的“电话簿”程序的一部分。用文件io打印整行
void viewall(){
int n, checking = 0;
char name[50];
fp = fopen("Phonebook.txt","r");
printf ("\n\n");
fscanf (fp, "%s %d", name, &n);
while (!feof(fp)){
printf (" %s +880%d\n", name, n);
fscanf (fp, "%s %d", name, &n);
++checking;
}
if (checking == 0){
printf (" Contact List is Empty. No Contacts to Show...");
}
printf ("\n\n");
fclose(fp);
menu();
}
此部分显示列表中的所有联系人。但是,如果任何联系人名称有两个部分,他们会分开。例如:我输入Anik Shahriar作为姓名,然后输入我的电话号码。我看着我的文件,这个数据在那里应该如何。
Anik Shahriar 01*******93
但是当我想显示所有的联系人。它得到了印像这样:
Anik 0
Shahriar 01*******93
我怎样才能使程序打印整个行?
当你说'fscanf(fp,“%s%d”,name,&n)'你正在编程时发现'Anik'这是一个字符串,然后看到一个空格并寻找一个数字并且找不到它(“Shahriar”是一个字符串),所以它把'0'放在'n'中。 __然后___找到“Shahriar”和电话号码,该部分正确。总之,除非你有名字和姓氏的变量,否则你不能用空格来分隔名和姓。 – Jerfov2
它工作@ user3121023但另一个问题。这次名称打印在同一行,但联系号码打印在下一行。 –
它没有之前。他们在同一条线上。在使用fgets之后,他们分开排队。我如何终止fgets中的'\ n'? –