Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中附加到文本文件_C - Fatal编程技术网

在C语言中附加到文本文件

在C语言中附加到文本文件,c,C,这里是函数。我运行了程序,但文件的格式没有改变 void add (char *name, int stock, int limit, float cost) { FILE *afp = fopen("./inventory.csv","a+"); fprintf(afp,"%s,%d,%d,%f\n",name,stock,limit,cost); fclose(afp); } 编辑:哎呀,我只是没有调用该函数。我会先检查您的文件是否存在或是否已正确打开。检查*afp

这里是函数。我运行了程序,但文件的格式没有改变

void add (char *name, int stock, int limit, float cost) {
    FILE *afp = fopen("./inventory.csv","a+");
    fprintf(afp,"%s,%d,%d,%f\n",name,stock,limit,cost);
    fclose(afp);
}

编辑:哎呀,我只是没有调用该函数。

我会先检查您的文件是否存在或是否已正确打开。检查*afp是否指向NULL。最后检查您的参数是否有附加值。

这应该可以完成这项工作

#include <iostream>
#include <string>

using namespace std;

void add( char* name, int stock, int limit, float cost )
{
  FILE *afp;
  errno_t err = fopen_s( &afp, "./inventory.csv", "a+" );
  if( !err )
  {
    fprintf( afp, "%s,%d,%d,%f\n", name, stock, limit, cost );
    fclose( afp );
  }
}

int main()
{
  add( "book", 12, 10, 15.2 );

  return 0;
}
文件没有更改吗

这可能是因为您不允许在中打开。我的意思是,您没有读取和附加到该文件所需的权限

文件不存在吗

这没关系。正如在参考资料中所说,如果以读取和附加模式打开文件,则会在文件不存在时创建该文件


打开以进行读取和追加。追加操作包括在将新数据写入文件之前删除EOF标记,并在写入完成后恢复EOF标记。如果文件不存在,则创建该文件。

是否检查了afp==NULL?是否在程序中调用了上述函数?调试器执行了什么操作say@KristerAndersson,这看起来确实是一个更好的问题:你真的在你的程序中调用了上面的函数吗?参数是否有值并不重要。问题是文件没有改变。