我需要从文件中读取一些数字,以便我没有关于指定行中有多少数字的任何信息,但是文件中给出了行数,如下所示,第一行给了我行数。我需要一些关于如何读取这些数字以保持整数格式(不是字符)的提示
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
答案 0 :(得分:-1)
这是一个使用fgets,strtok和atoi的简单示例。 (因为你的输入只使用小的int,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);
}