2

我需要从文件中读取一些数字,这样我就没有关于指定行中有多少数字的任何信息,但是文件中给出了行数,如下所示,其中第一行给了我线。我需要一些提示,说明我如何无法读取这些数字以将它们保持为整数格式(不是字符)

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
4

1 回答 1

-1

这是一个使用 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);

}
于 2013-10-09T19:39:20.140 回答