用c读写文件

何塞·曼努埃尔·阿拉尔孔

我想知道为什么我的程序无法将我的.txt文件的数字输入到数组中。它读取了它们,但是我无法将它们输入到数组中以备后用。有人可以帮助我更好地理解在c中读写文件的管理吗,请问我是这个话题的新手,我知道我应该使用int代替chars,因为我的.txt文件仅包含数字。但是我认为fgets之类的功能仅适用于字符。

#include <stdio.h>

    int main()
    {
        FILE* file;
        char name[10] = "100.txt";
        char line[10];
        int n;
        char i[5];
        file = fopen(name, "rt");

        if (file == NULL)
        {
            printf("There is no such file!\n");
            return 0;
        }
        for (n=0; n < 100; n++){
        fgets(line, 5, file);
        //puts(line);
        i[n]=line;
        puts(i[n]);
        }
        fclose(file);

        return 0;
    }
编码冒险

如果切换到fscanf,则可以使用int代替char,并且鉴于您正在解析包含数字的文本文件,这样做更有意义。假设您的100.txt包含100个数字,并用空格分隔,则应该可以使用:

int main(int argc, char* argv[])
{
    FILE* file;
    char name[10] = "100.txt";
    char line[10];
    int n;
    int numberArray[100];
    file = fopen(name, "rt");

    if (file == NULL)
    {
        printf("There is no such file!\n");
        return 0;
    }

    for (n=0; n < 100; n++){
        fscanf(file, "%d", &numberArray[n]);
    }
    fclose(file);

    return 0;
}

这是fscanf解释的链接

编辑:

还有另一个使用fscanf的解决方案:

while (fscanf(file,"%d",&numberArray[n++]) == 1);

这样,只要有数字(即直到EOF),您就可以循环浏览文本文件。请注意,如果文本文件中的数字计数大于为数组分配的空间,则程序可能会崩溃

要写回文件:

FILE* fp = fopen( "out_file.txt", "w" ); // Open file for writing
int arrNumSize = sizeof(numberArray) / sizeof(int);
for (int i = 0; i < arrNumSize; i++)
{ 
    fprintf(fp, "%d", numberArray[i] );
}

fclose(fp);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章