我想一次读取和处理(例如打印)CSV 文件第一行中的条目。我假设 Unix 风格的\n
换行符,没有条目长于 255 个字符,并且(目前)在 EOF 之前有一个换行符。这意味着是一个更有效的替代fgets()
方法strtok()
。
#include <stdio.h>
#include <string.h>
int main() {
int i;
char ch, buf[256];
FILE *fp = fopen("test.csv", "r");
for (;;) {
for (i = 0; ; i++) {
ch = fgetc(fp);
if (ch == ',') {
buf[i] = '\0';
puts(buf);
break;
} else if (ch == '\n') {
buf[i] = '\0';
puts(buf);
fclose(fp);
return 0;
} else buf[i] = ch;
}
}
}
- 这种方法是否尽可能有效和正确?
- 使用此方法测试 EOF 和文件读取错误的最佳方法是什么?(可能性:针对字符宏
EOF
、feof()
、ferror()
等进行测试)。 - 我可以使用 C++ 文件 I/O 执行相同的任务而不会降低效率吗?