簡體   English   中英

保存到同一數組的循環中的fscanf會導致空格填充數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM