【发布时间】:2014-01-28 15:56:38
【问题描述】:
我有一个包含类似数据的文件 -
Name, Age, Occupation
John, 14, Student
George, 14, Student
William, 23, Programmer
现在,我想读取数据,以便将每个值(例如姓名、年龄等)读取为字符串。
这是我的代码 sn-p -
....
if (!(ferror(input_fp) || ferror(output_fp))) {
while(fscanf(input_fp, "%30[^ ,\n\t]%30[^ ,\n\t]%30[^ ,\n\t]",
name, age_array, occupation) != EOF){
fprintf(stdout, "%-30s%-30s%-30s\n", name, age_array, occupation);
}
fclose(input_fp);
fclose(output_fp);
}
....
但是,这会进入一个无限循环,并给出一些随机输出。
这就是我对input conversion specifiers 的理解。%30[^ ,\n\t] -> 读取的字符串长度最多为 30 个字符,并且
DOES NOT 包含空格、逗号、换行符或制表符。
我正在阅读 3 个这样的字符串。
我哪里错了?
【问题讨论】:
-
while(fscanf(stdin, " %30[^ ,\n\t], %30[^ ,\n\t], %30[^ ,\n\t]", name, age_array, occupation) == 3){