c - 在 "n"行中读取未知数量的整数

标签 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

最佳答案

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

}

关于c - 在 "n"行中读取未知数量的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19280402/

相关文章:

在 cmocka 中创建夹具

c - 为 C 代码编写单元测试

c - 我收到对我构建的 shell 的拒绝许可

c - 在 PHP 扩展中将数组添加到类中

c++ - linux底层如何拦截键盘输入?

c - 显示无边框图片并退出纯c

c - STM32 HAL GPIO中断计数太多

c - Union - 你怎么知道正在使用哪个 union 参数?

c - 线程堆栈溢出

c - 使用C中的线程表示路由表-作业任务