c - 如何在 C 中读取 .txt

标签 c arrays fopen

我必须像这样从 .txt 中读取(1.-txt 行)

  1. 1 2
  2. 1 2 3
  3. 1 3 4

但我必须这样读:“1”第一行,属性为 x[0],“2”第一行属性为 x[1]。我知道该怎么做,但问题是我必须跳到第 2 行并执行相同的操作,但它不起作用。 所以就像 x[2]=1。 x[2]=2, x[3]=3, x[4]=1, x[5]=3, x[6]=4 我有办法吗??? 谢谢!


让我尝试更具体一些

  1. 1 2 1
  2. 2 3 1
  3. 3 4

假设这是一个 txt 文件,其中 3. 2. 和 1. 是第一行、第二行和第三行。我必须读取每一行的每个数字并分配给 vet[MAX]; 我能做到,但只能用第一行。不知道怎么跳到第二个


我的代码

#include <stdlib.h>

int main (void)
{
char buf[1024];
int numeros[8];

FILE *fp = fopen("teste.txt", "r");
if(fp == NULL)
    return EXIT_FAILURE;

while(fgets(buf, sizeof(buf), fp)) {
    if(buf[0] == '\n')
        continue;

    sscanf(buf, "%d %d %d %d %d %d %d", &numeros[0], &numeros[1], &numeros[2], &numeros[3],&numeros[4], &numeros[5], &numeros[6]);
}

fclose(fp);
    printf(" \n %d \n %d \n %d \n %d \n %d \n %d \n %d", numeros[0], numeros[1], numeros[2], numeros[3],numeros[4], numeros[5], numeros[6]);

   the output 

3 4个 1个 131072 2685712 302692880 4798692 进程返回 53 (0x35) 执行时间:0.016 秒 按任意键继续。

我想要

1 2 2 1 2 3 1 3 4

最佳答案

假设你对 x[2] 的双重使用是一个拼写错误,并且假设行号不在文件中,你只需要循环执行:

fscanf(file, "%d", &x[i++]);

直到失败。因此请记住检查返回值,如果它不是 1,则无法找到要转换和存储的数字,您应该停止。

当然,这里假设x有足够的空间,并且i初始化为0。

关于c - 如何在 C 中读取 .txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20427998/

相关文章:

c++ - 将负文字作为无符号参数传递时,g++ 会发出警告吗?

javascript - 选择数组javascript中的最后一项

calloc 调用失败,代码崩溃

javascript - 比较两个数组的相交值

c - char *argv[] 和 char **argv 对于 main() 的第二个参数的区别

c - 处理文本文件二

c - 程序未使用命令行上指定的名称创建文件

无法将 char 数组(文件名)传递给 fopen(file,r)

c - *p 和 *&p 有什么区别

c - 如何确定连接到 C 中的 INADDR_ANY 监听器套接字的客户端使用的 IP