【发布时间】:2015-05-18 18:07:34
【问题描述】:
我正在尝试遍历包含随机内容的文本文件。目前的内容是:
"13 -35 57 - 23723724
12taste-34the+56rain-bow845"
我的程序应该只从文件中获取数字(-35 作为负数,但不是 - 23723724,因为它们之间有空格)并且没有字母或与整数无关的其他字符。
目前我的代码有一个循环遍历文件并获取所有十进制值。然而,由于某些未知原因,它在 57 之后停止(总结果为:“13-3557”,然后停止)。
我曾尝试单独遍历每个字符,但这带来了它自己的一系列问题,而且此方法至少返回整数。
这是我的代码:
int *getIntegers(char *filename, int *pn) {
// Create a dynamic array
int len = 100;
int *numbers = malloc(sizeof(int) * len);
// Source file
FILE *file;
file = fopen(filename, "r");
int i = 0, number = 0;
while(fscanf(file, "%d", &number) > 0) {
numbers[i++] = number;
printf("%d", number);
}
return numbers;
}
编辑: 我已经更改了我的代码,它现在检索所有数字,但没有空格。
// Create a dynamic array
int len = 100;
int *numbers = malloc(sizeof(int) * len);
// Source file
FILE *file;
file = fopen(filename, "r");
int i = 0, number = 0;
while(!feof(file)) {
if(fscanf(file, "%d ", &number) > 0) {
numbers[i++] = number;
} else {
clearerr(file);
fgetc(file);
}
}
fclose(file);
return numbers;
【问题讨论】:
-
你有什么问题?
-
@RSahu 为什么它停在 57 而不是继续获取其余的数字。
-
你期望的输出是什么?
-
@BLUEPIXY 文本文件中的数字,以空格分隔。现在我得到了所有的数字,但没有得到分隔空间。我会更新我的代码。
标签: c file while-loop integer scanf