繁体   English   中英

有人可以解释一下此代码段的内容吗?

[英]Could someone please explain what this code snippet is doing?

我无法理解我在网上找到的示例代码。 你能帮我了解一下吗

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

当然。

首先,通过分配一个指针指向一个代码段泄漏存储器 malloc() ated,1025字节长的缓冲器向data指针,然后将其重新分配的返回值fopen()

其次,该代码错误地假定fopen()总是成功,向用户打印一个误导性的信息消息,然后尝试读取一行或最多1023个字节到缓冲区outMsg

第三,如果对fgets()的调用成功,它将打印“成功”消息。

在第四步中,它获取刚刚读取的数据的长度, 将其错误地分配给int类型的变量 (应改为size_t ),然后使用printf()将长度和消息显示给控制台。


简而言之,无论谁为您提供了这段“示例代码”,都应永久禁止其编程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM