2017-01-26 5 views
0

テキストファイルを開き、1行ずつ読み込むプログラムがあります。また、各行を配列に格納します。この関数を使用してprintf文で各行を使用しようとすると、改行文字が追加されます。テキストファイルを1行ずつ読み込むときに空白を追加するCプログラム

私のコードは次のよう

char fileContents[MAX_LINES][MAX_LINE_LENGTH]; 
    int lineCount = 0; 

    FILE *ifp = fopen("Tree-B.txt", "r"); 
    if (ifp == NULL) 
    { 
     printf("Error opening file!\n"); 
     exit(1); 
    } 

    while (fgets(fileContents[lineCount++], MAX_LINE_LENGTH, ifp) != NULL); 
    fclose(ifp); 

    printf("Name: %s is now %s", fileContents[0], fileContents[1]); 

これの出力は次のようになります。

Name: Tree Bacon 
is now 30.21 

のprintfは改行文字を追加していると私はなぜこれが起こっているを発見するように見えることはできません。私のテキストファイルから読み出された

二行は以下の通りであった。また、末尾の改行を保存する

Tree Bacon 
30.21 
+1

'printf'は何も追加していません。改行は元のファイルにあります。 – melpomene

+1

'fgets'は入力から' newline'を保持します。 –

+0

'printf'は何も追加しません。改行はあなたのデータにあります。 'fgets()'は行を読み込むときの改行を含みます。 –

答えて

0

fgetsので、あなたがstrchrを使用して削除することができます

char *ptr; 

while (fgets(fileContents[lineCount], MAX_LINE_LENGTH, ifp) != NULL) { 
    ptr = strchr(fileContents[lineCount], '\n'); 
    if (ptr != NULL) { 
     *ptr = '\0'; 
    } 
    linecount++; 
} 
0

私のお気に入りの方法を削除するにはその後ろにnewlineによって読み取られたものは、fgetsであり、strcspn

もちろん、配列インデックスのインクリメントを遅らせる必要があります。

関連する問題