下面的程序可能會做的要求,但它是沒有效率不夠。我只是舉一個粗略的例子。希望這可以幫助。
#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;
}
您可以使用'getline()'函數,但它是GNU特有的。 – Gaurav
歡迎來到SO。請注意,這不是免費的家庭作業送貨服務。閱讀[tour](https://stackoverflow.com/tour)和[如何提問](https://stackoverflow.com/help/how-to-ask)。然後你會看到你應該提供你到目前爲止所嘗試的以及你的具體問題。 – Gerhardh
您需要*將每一行連接到您的'result'緩衝區。有一個很好的標準C函數來連接字符串(如果你使用你最喜歡的搜索引擎,你應該很快找到它,就像[讀一些好的初學者書籍一樣](http://stackoverflow.com/questions/562303/)在-明確-C-書指南和列表))。 –