【发布时间】:2016-03-30 21:04:37
【问题描述】:
我正在尝试读取包含字符串和数字的文本文件并保存到它们各自的数组中。这是我要阅读的内容文本文件
Ryan, Elizabeth 62
McIntyre, Osborne 84
DuMond, Kristin 18
Larson, Lois 42
Thorpe, Trinity 15
Ruiz, Pedro 35
Ali, Mohammed 60
Vashti, Indura 20
我需要将 repescitve 人的姓氏、名字和年龄保存在并行数组中。 (所以我需要在阅读时丢弃逗号)。 这是我目前所拥有的。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char line[100][41];
char junk[100];
int i;
FILE *file = fopen(argv[1], "r");
if(!file) {
printf("Could not open file. Exiting application.");
return 1;
}
for(i=0; i<100; i++)
{
fscanf(file, "%[^\n]", line[i]); //Get text
fscanf(file,"%[ \n\t\r]s",junk); //Remove any 'white space' characters
}
fclose(file);
for (i=0; i<30; i++)
printf("%s\n",line[i]);
return 0;
}
我已经在 IDE 中传递了文件参数。我在输出的末尾得到了很多特殊字符。
Ryan, Elizabeth 62
McIntyre, Osborne 84
DuMond, Kristin 18
Larson, Lois 42
Thorpe, Trinity 15
Ruiz, Pedro 35
Ali, Mohammed 60
Vashti, Indura 20
┌
t╠╠
$
M
v
9 Rì
xá
╚
±
t/╗₧8
¿≡`
Tq töq t4≤`
ÿv
h(((( Hääääääääääüüüüüüéééééé
我为什么要阅读所有这些特殊字符?以及如何丢弃逗号并保存到三个不同的数组中?
【问题讨论】:
-
替代方法:使用
fgets()并然后解析缓冲区。 -
while ( fscanf("%s,%s%d", last, first, &num) == 3 ). -
要解析缓冲区,请查看
strtok和delims = ", \t\n";(即逗号、空格、制表符、换行符)