读取“n”行中未知数量的整数

时间:2013-10-09 19:01:20

标签: c

我需要从文件中读取一些数字,以便我没有关于指定行中有多少数字的任何信息,但是文件中给出了行数,如下所示,第一行给了我行数。我需要一些关于如何读取这些数字以保持整数格式(不是字符)的提示

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

1 个答案:

答案 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);

}