C编程读取文件并将其存储为字符串

时间:2014-09-13 12:39:54

标签: c file

我编写了c代码,我的程序的输入值来自这里:

char *input[] = {"This input string value !!!", NULL};

但是如何从文件中读取此值(例如input.txt)?是否可以像文件串一样获取文件内容?

非常感谢!

3 个答案:

答案 0 :(得分:2)

如果您想逐行阅读文件,最简单的方法是使用getline。阅读man page以获取详细说明和良好的代码示例。

getline将为您完成分配缓冲区,复制数据和扫描换行符等的所有低级管道工作。请注意,这是唯一可行的,因为getline使用动态分配的内存,您需要再次释放。

答案 1 :(得分:1)

您可以像这样使用fgets()

#include <stdio.h>

int main() {
    char var[100];
    FILE *file;
    file = fopen("input.txt","r");
    while(fgets(var, sizeof(var), file)!=NULL)
    printf("Data read=%s\n",var);
    fclose(file);
    return 0;
}

你也可以像这样使用fgetc()

#include <stdio.h>

int main() {
        char ch;
        FILE *file;
        file = fopen("input.txt","r");
        while ((ch=fgetc(file)) != EOF)
        printf("%c", ch);
        fclose(file);
        return 0;
}

答案 2 :(得分:0)

在最近的Posix兼容系统上,您可以使用getline(3),例如

FILE *fil = fopen("somefile.txt", "r");
if (!fil) {perror("somefile.txt"); exit(EXIT_FAILURE); };
char*linbuf = NULL; 
size_t siz = 0;
ssize_t linlen = 0;
while ((linlen=getline(&linbuf, &siz, fil))>0) {
   // linbuf contains the current line
   // linlen is the length of the current line
   do_something_with(linbuf, linlen);
};
fclose(fil);
free(linbuf), linbuf=NULL;
linlen = 0, siz = 0;