【发布时间】:2013-03-18 17:54:54
【问题描述】:
我无法理解我在网上找到的这个示例代码。你能帮我理解一下吗
#define PKTNAME "Msg"
FILE *data;
char outMsg[1500]="getmybw\0";
data = fopen(PKTNAME,"r");
printf("file open success!!\n");
if(fgets(outMsg, 1024, data))
printf("Msg read success!\n");
outMsgLen = strlen(outMsg)+1;
printf("outMsgLen is: %d,\toutMsg is:\n%s\n",outMsgLen,outMsg);
此外,当我运行此代码时,我在这一行遇到分段错误:
if(fgets(outMsg, 1024, data))
【问题讨论】:
-
另外,在您的
fopen后面附上代码:if(data != NULL)。这将确保您的代码在找不到文件时不会继续运行。 -
#define PKTNAME "Msg"不会创建一个名为 PKTNAME 的文件?如果 fopen 只打开名为“PKTNAME”的文件..这个文件必须在哪里? -
好的,我添加了 if 语句用于错误检查,就像你建议的那样。这正是问题发生的地方。 fopen 不工作。是什么导致了这个问题?
-
不。
fopen如果您指定“r”作为模式,则如果文件不存在,则将返回 NULL。请阅读the documentation 以获得更好的清晰度。如果您的程序在发布此 sn-p 之前未修改当前目录,则“MSG”文件必须与可执行文件位于同一目录中。 -
感谢 100% 的工作......我将模式更改为“w+”来创建和更新文件......非常感谢
标签: c macos segmentation-fault