试图写入文件

时间:2014-03-25 04:02:25

标签: c fputs

我正在尝试打开然后写入.dat文件。该文件只是一个简单的数字系列,但我想添加它。现在fputs不适合我。

我想知道我是否正在使用正确的功能来完成这项工作。现在它说我不能在函数 fputs 中使用整数 enter_this ,因为它不是一个常量字符。

我想要求用户在文件中添加一个整数。我理解了这一点之后的下一步是添加字符串,浮点数,字符等等。但只是得到一些有用的东西是好的。

#define _CRT_SECURE_NO_WARNINGS     #包括     #包括     #包括     #包括     #包括     #包括     #包括     #include

//functions called

//why is it void?
int main(void)
{

    FILE *pFile;
    int choice = 0;
    char buf[40];
    int i = 0;
    int num[40];
    int enter_this;

    printf("WELCOME. \n\n");
    pFile = fopen("test.dat", "r");
    if (pFile != NULL)

    for (i = 0; i < 8; i++)
    {
        //get num
        fgets(buf, sizeof(buf), pFile);
        num[i] = atoi(buf);

        printf("#%i = %i\n", i, num[i]);
    }


    printf("Enter number to be added: ");
    gets_s(buf);
    enter_this = atoi(buf);
    fputs(enter_this, pFile);
    fclose(pFile);

    system("pause");

}//end main

1 个答案:

答案 0 :(得分:1)

int main(void)

&#39; void&#39;在这种情况下暗示功能&#39; main&#39;不接受任何参数。如果你只是在C中留下空的parens,这意味着函数接受可变数量的参数,而不是你想象的那样。

如果您想在文件的末尾添加一个数字,则必须在&#34;追加模式&#34;中打开它:

FILE *pFile = fopen("test.dat", "a");

第二个论点&#34; a&#34;是一个模式字符串。它告诉fopen打开文件进行追加,即数据将写在文件的末尾。如果该文件不存在,则创建该文件。您当前正在打开文件&#34;只读&#34;模式&amp;根本无法写信给它。阅读fopen采用here的不同模式字符串。

检查文件指针是否为NULL也是多余的。你已经没有通过&#39;如果&#39;在指针不为NULL时运行。它应该是这样的:

if (!pFile) {
    puts("Something went wrong");
    exit(1);
}

最后,fputs采用STRING值,即字符常量。它将拒绝使用enter_this,因为它是一个整数。将整数写入文件的一种方法是使用fprintf。例如:

/* Write the integer enter_this & a newline to pFile */
fprintf(pFile, "%d\n", enter_this);