我需要从文件中读取一些数字,这样我就没有关于指定行中有多少数字的任何信息,但是文件中给出了行数,如下所示,其中第一行给了我线。我需要一些提示,说明我如何无法读取这些数字以将它们保持为整数格式(不是字符)
10
1 2 3 4 5
2 3 4
3 4
4 5 6
5
6 7 10
7 8 9
8 9
9
10
我需要从文件中读取一些数字,这样我就没有关于指定行中有多少数字的任何信息,但是文件中给出了行数,如下所示,其中第一行给了我线。我需要一些提示,说明我如何无法读取这些数字以将它们保持为整数格式(不是字符)
10
1 2 3 4 5
2 3 4
3 4
4 5 6
5
6 7 10
7 8 9
8 9
9
10
这是一个使用 fgets、strtok 和 atoi 的简单示例。(因为您的输入只使用小整数,所以 atoi 可以正常工作。)请务必在顶部编辑文件路径。
注意:这只是一个快速而肮脏的示例,即数字被硬编码为仅包含 100 个值,行 buf 被硬编码为仅包含 259 个字符 + 1 等行,等等。如果你想让它更灵活(更大文件,更多数字),根据需要使用calloc();
和free();
创建和释放内存。
#include <ansi_c.h>
int main(void)
{
FILE *fp;
char *tok;
int numbers[100];
char tempBuf[5], lineBuf[260];
int i=0;
memset(numbers, 0, sizeof(numbers));
fp = fopen("C:\\dev\\play\\numbers.txt", "r");
while(fgets (lineBuf, sizeof(lineBuf), fp))
{
tok = strtok(lineBuf, " \n");
while(tok)
{
strcpy(tempBuf, tok);
numbers[++i] = atoi(tempBuf);
tok = strtok(NULL, " \n");
}
}
fclose(fp);
}