2017-02-01 131 views
-1

寫了一個短程序來讀取文件,並在屏幕上打印文件的內容。以下是代碼片段。它有一個邏輯錯誤。該程序只是編譯和打印到屏幕上。我的思維過程被閱讀並只打印字符並跳過查找到的逗號。正在讀取文件內容

Eg file   
    A,1 
    B,2 

    Eg output 
    A 1 
    B 2 

    char = str; 
    while(fscanf(fpointer, "%c", &str) == 1) 
    { 
      while((str=getchar()) != ',') 
        printf("%c",str); 
    } 
+2

「它有一個邏輯錯誤」。告訴我們你正在觀察的不正確的行爲是有道理的,不是嗎? – kaylum

+0

對。我更新了這篇文章。該程序不會放任何東西。 – mac

+0

您是否閱讀過手冊頁以查看['getchar'](https://linux.die.net/man/3/getchar)是做什麼的?讀過之後,你是否認爲它從你想要的位置讀取? – kaylum

回答

1

您的第一條語句是正確的。但是,您在第二天的聲明中不使用getchar。這將等待用戶輸入一個字符(這就是爲什麼沒有在您的屏幕上打印)。改用這種方法。

 while(fscanf(f, "%c", &str) == 1) 
     { 
       //while((str=getchar()) != ',') 
      if(str==',') 
      { 
         printf(" "); 
      } 
      else 
      { 
       printf("%c",str); 
      } 
     }