我正在尝试获取csv文件并将其中的字符串分配给csv。我尝试了几件运气很少的东西。这就是我到目前为止所做的:
int main(int argc, char* argv []) {
FILE *file = fopen( argv[1], "r" );
int x;
char strings[50];
while ((x = fgetc(file)) != EOF) {
printf( "%c", x);
}
fclose(file);
return 0;
}
我已经创建了字符串char数组,但我不确定如何将csv的内容分配到其中。有什么想法吗?
提前致谢。
答案 0 :(得分:0)
您可以使用fgets
直接读入数组strings
-
char strings[255]; //give size accordingly
while(fgets(strings,sizeof strings,file)!=NULL) { //iteratre until fgets return NULL
printf("%s", strings); //print string that is read from file
}
注意 -
1.您尚未检查argc
以及return
的{{1}}的值。你应该检查它们。
答案 1 :(得分:0)
您可以使用您的逐字阅读方法。在你去的时候填充你的临时缓冲区,但要注意不要溢出它。遇到分隔符时 - 列的逗号,行的换行符 - 处理当前缓冲区。
重置缓冲区,调整当前行和列并重复,直到找到文件末尾。如果要存储单元格的内容,请务必进行复制,因为临时缓冲区将被覆盖。
这是一个只打印数据的简单示例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
FILE *file = fopen("example.csv", "r");
// check for errors
char buf[50];
int nbuf = 0;
int row = 0;
int col = 0;
for (;;) {
int c = fgetc(file);
if (c == EOF) break;
if (c == '\n' || c == ',') {
buf[nbuf] = '\0';
printf("[%d][%d] '%s'\n", row, col, buf);
nbuf = 0;
if (c == ',') {
col++;
} else {
col = 0;
row++;
}
} else {
if (nbuf + 1 < sizeof(buf)) buf[nbuf++] = c;
}
}
fclose(file);
return 0;
}