首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言鏈表創建死循環:scanf 格式字符串寫反導致

     編輯:程式設計綜合問答

錯誤代碼

scanf("d% d%", &(p1->coefficient), &(p1->exponent)); // ❌ 格式字符串錯誤

正確寫法

scanf("%d %d", &(p1->coefficient), &(p1->exponent)); // ✅ %d 在前,中間空格分隔

原因分析

  • scanf 格式字符串必須以 % 開頭,如 %d、%f;
  • 寫成 d% 導致 scanf 無法識別轉換規格,不消費輸入,指針不移動,返回 0,循環條件 coefficient != -1 永遠為真(未賦值),進入死循環;
  • 輸入緩衝區數據殘留,程序「假死」實為無限循環讀取失敗。

調試技巧

  • 檢查 scanf 返回值:if (scanf("%d %d", &a, &b) != 2) break;;
  • 使用 fgets + sscanf 更安全;
  • 編譯器警告 -Wformat 可捕獲此類錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved