[英]fscanf in a loop saving to the same array causes spaces to fill array
我有一個格式如下的文件:
01,Name1
02,Name2
03,Name3
04,Name4
05,Name5
我綁定它使用戶可以鍵入01或02之類的數字,並返回相應的名稱。 當我輸入01時,這樣可以正常工作。但是當我輸入任何數字后,它不起作用,似乎當我用以下代碼替換循環:
fscanf(fp,"%20[^,],%s[^\n]",ln,name);
printf("1=%c 2=%c 3=%c 4=%c\n",ln[0],ln[1],search[0],search[1]);
fscanf(fp,"%20[^,],%s[^\n]",ln,name);
printf("1=%c 2=%c 3=%c 4=%c\n",ln[0],ln[1],search[0],search[1]);
第二次圍繞ln [0]充滿了很多空格或“\\ n”。 我說不出來。 任何幫助將不勝感激。
這是我的代碼:
#include <stdio.h>
int main()
{
puts("Enter seach number:");
char search[2];
scanf("%c%c",&search[0],&search[1]);
FILE *fp;
fp = fopen("/Users/user1/Desktop/text.txt","r");
if(fp == NULL){
puts("File dose not exits");
return (1);
}
else{
puts("File found");
}
char ln[3];
char name[20];
fopen("fp","r");
puts("File opened");
int searching = 1;
while(searching == 1)
{
fscanf(fp,"%20[^,],%s[^\n]",ln,name);
if(ln[0]==search[0]&&ln[1]==search[1])
{
printf("%s",name);
searching = 0;
}
else if(ln[0] == '\n')
{
puts("Could not find number");
searching = 0;
}
}
return 0;
}
錯誤使用fscanf()
格式
// fscanf(fp,"%20[^,],%s[^\n]",ln,name);
fscanf(fp,"%20[^,],%s%*[^\n]",ln,name);
// or
fscanf(fp,"%20[^,],%s ",ln,name);
// or
fscanf(fp," %20[^,],%s",ln,name);
最好檢查結果並將寬度添加到%s
char ln[20+1];
char name[30+1];
if (2 == fscanf(fp,"%20[^,],%30s%*[^\n]",ln,name)) Success();
最好用fgets()
char buf[100];
if (fgets(buf, sizeof buf, fp) == NULL) {
if (2 == sscanf(buf,"%20[^,],%s",ln,name)) Success();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.