這是我的「電話簿」程序的一部分。用文件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'? –