簡體   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