c - 尝试写入文件

标签 c fputs

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

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

我想要求用户向文件添加一个整数。了解这一点后,我的下一步是添加字符串、 float 、字符等。但只要得到一些有效的东西就很好。

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

//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

最佳答案

int main(void)

本例中的“void”意味着函数“main”不接受任何参数。如果您在 C 中保留空括号,则意味着该函数接受可变数量的参数,而不是您所期望的 0。

如果要在文件末尾添加数字,则必须以“附加模式”打开它:

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

第二个参数“a”是模式字符串。它告诉fopen打开文件进行追加,即数据将被写入文件的末尾。如果该文件不存在,则创建该文件。您当前正在以“只读”模式打开该文件,并且根本无法写入该文件。了解 fopen 采用的不同模式字符串 here .

检查文件指针是否为 NULL 也是多余的。当指针不为 NULL 时,您没有向“if”传递任何 block 来运行。它应该是这样的:

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);

关于c - 尝试写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22625205/

相关文章:

c - C 中小型数据集 HashMap 的替代方案

c - 读取c中制表符分隔的文件

c - 在 c - wwwmc 中实现 'cat'? (我的代码有什么问题)

c - 运行程序时出现错误#include <czmq.h>丢失

c - C 中的静态数组初始化

c - C运算中的Socket客户端

c - 用于写入 EBCDIC 字符数组的 fputs

c - fputs 与 fprintf 和 double

c - C 中意外标记 '(' 附近的语法错误

c - 取消引用 char 指针会导致段错误