我编写了c代码,我的程序的输入值来自这里:
char *input[] = {"This input string value !!!", NULL};
但是如何从文件中读取此值(例如input.txt)?是否可以像文件串一样获取文件内容?
非常感谢!
答案 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;