从文本文件读入char数组[]

时间:2014-05-11 09:51:03

标签: c file

在我的项目中我使用数组而不是指针。我的目的是将text.file中的所有字符逐个复制到数组中。我从互联网上找到了一些例子,这个网站,但没有一个对我有用。 认为input1.txt是“abcd”我想要这些input1 [0] = a,input1 [1] = b等。

main ()
{
    FILE *f1 = fopen("input1.txt", "r");
    int i;
    fseek(f1, 0, SEEK_END); 
    int inputsize = ftell(f1); //its about text's size
    char input1[inputsize];
    for(i = 0; i < inputsize; i++)
    {
          fscanf(f1, "%c", &input1[i]);
    }
    printf("%c ", input1[3]);
    getchar();
}

当我运行此代码时,它不会打印“d”,而是打印“6”。为什么会这样?我该怎么办?谢谢你的帮助

2 个答案:

答案 0 :(得分:4)

您寻找文件的末尾以获取它的大小,但在开始实际阅读之前不要再次回到文件的开头。

在循环之前插入:

fseek(f1,0,SEEK_SET);

将您的代码粘贴到我的编译器中,并在我的机器上进行了此修改

答案 1 :(得分:2)

你也可以使用函数倒带(FILE *)而不是再次执行fseek()。

值得注意的是,您应该使用变量分配数组,在这种情况下这可能是一个坏主意(特别是当您可以读取比4个字符更大的文件时)。