2017-07-28 4 views
2

これですべての印刷、バッファにそれを格納し、各行を変性する、ファイルをファイルをされて読みます各ラインへの接尾辞..は一度

FILE *fp = fopen ("file", "r"); 
while (fgets (buffer, sizeof (buffer), fp) != NULL) { 

    // append "test" to each line. 
    // store the result in a buffer named "result" 

} 
fclose (fp); 

プリント一度にすべての結果:

printf("%s", result); 

期待される結果:

line 1test 
line 2test 
line 3test 
+0

'getline()'関数を使うことができますが、それはGNU固有のものです。 – Gaurav

+1

ようこそ。これは無料の宿題サービスではありません。 [ツアー](https://stackoverflow.com/tour)と[お問い合わせ方法](https://stackoverflow.com/help/how-to-ask)をお読みください。それから、これまでに試したことと、**あなたの**特定の**問題が何であるかを提示する必要があることがわかります。 – Gerhardh

+1

各行を 'result'バッファに連結する必要があります。文字列を連結するためのすてきな標準C関数があります(あなたが好きな検索エンジンを使用する場合は、すぐにそれについて知るべきです)。[http://stackoverflow.com/questions/562303/] c-book-guide-and-list)を参照してください)。 –

答えて

0

以下のプログラムは、要求を行う可能性がありますが、それは十分に効率的ではありません。私はちょうど例をあげています。お役に立てれば。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

void display(char** temp,int LinesWritten); 

int main() 
{ 
FILE *fp; 

char *buffer = (char*)malloc(sizeof(char)*101); // 101 is just an assumption. dynamic size may be decided 
char **result = (char**)malloc(sizeof(char*)*10); // 10 is just an assumption. dynamic size may be decided 
int LinesWritten = 0; 
char **temp = result; 
char **freetemp = result; 

if((fp = fopen("file.txt","r"))==NULL) 
{ 
     printf("Error while opening file\n"); 
     exit(1); 
} 

while((fgets(buffer,100,fp))&&(!(feof(fp))))  //assuming that 100 characters will be read into the buffer 
{ 
     if(*result = (char*)malloc(sizeof(char)*10)) 
     { 
       sprintf(*result,"%s%s",buffer,"test"); 
       *result++; 
       LinesWritten++; 
     } 
} 

fclose(fp); 

display(temp,LinesWritten); 

if(freetemp!=NULL) 
{ 
     free(freetemp); 
} 

return 0; 

} 

void display(char** temp,int LinesWritten) 
{ 

for(int i=0;i<LinesWritten;i++) 
{ 
     printf("%s\n",*temp); 
     *temp++; 
} 

return; 
} 
+0

1)これはメモリリークを引き起こします。 2)入力行から改行を削除する必要があります。 3) 'malloc(sizeof(char)* 10)':行バッファーよりも小さいため、バッファーオーバーランが発生します。 4) '!(feof(fp))':最後の行に改行がないと、機能しなくなります。これは余分であり、削除する必要があります。 – BLUEPIXY