将字符串写入.mc文件

将字符串写入.mc文件,c,file-io,C,File Io,我试图将数据写入一个文件,但它没有出现,但我知道程序正在完成。我建立了一个可写文件,从命令参数获取名称 FILE *outFilePtr; 然后,我通过以下方式创建文件: outFilePtr=fopen(outFileString,"w"); //outFileString is the name of the file from command 现在我尝试打印到扩展名为.mc的文件: fprintf(outFilePtr,"%s\n","1001") //example string

我试图将数据写入一个文件,但它没有出现,但我知道程序正在完成。我建立了一个可写文件,从命令参数获取名称

  FILE *outFilePtr;
然后,我通过以下方式创建文件:

outFilePtr=fopen(outFileString,"w"); //outFileString is the name of the file from command
现在我尝试打印到扩展名为.mc的文件:

fprintf(outFilePtr,"%s\n","1001") //example string

创建文件时,不会向其写入任何内容。这可能是一个愚蠢的问题,但您不能将字符串写入机器代码文件吗?如果是这样的话,我正在试图找到解决这个问题的方法。

您应该检查fopen和fprintf的结果。这对我很有用:

#include <stdio.h>
#include <errno.h>

int
main(int argc, char *argv[])
{
  FILE *outFilePtr;

  outFilePtr = fopen("asdf.mc", "w");
  if(!outFilePtr) {
    perror("Couldn't open it");
    fprintf(stderr, "errno:  %d\n", errno);
    exit(-1);
  }
  if(fprintf(outFilePtr, "%s\n", "1001") < 0)
  {
    fclose(outFilePtr);
    perror("Couldn't write to it");
    fprintf(stderr, "errno:  %d\n", errno);
    exit(-1);
  }
  fclose(outFilePtr);
}
如果我在fprintf之前关闭出纸器PTR,则会显示此错误:

Couldn't write to it: Bad file descriptor
errno:  9

请检查是否在fprintf()之后关闭文件(使用fclose(fptr))。

call
fclose(outfile)结尾我不确定你在这里所说的“机器代码文件”是什么意思,但实际上你会得到一个包含字符串“1001”的常规文本文件。如果程序没有崩溃,标准I/O缓冲区应该被刷新,文件会自动关闭(尽管我完全同意
fclose(outFilePtr);
会更好)。如果程序崩溃,那么一个空文件就太可信了。就C程序而言,扩展名
.mc
没有什么特别之处。我解决了这个问题,但在这里我有一个快速的gdb问题。我试图用参数运行它,如果argc=3号出口。当我运行run>assembly(可执行文件的名称)testcase.as output.mc时,gdb将不起作用,但当我忽略assembly并由于错误检查而退出时,它会起作用。很抱歉,只是为了解决这个相关的bug而出现的随机性
Couldn't write to it: Bad file descriptor
errno:  9