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

C語言數組刪除功能失效:scanf 返回值誤用導致邏輯錯誤

     編輯:程式設計疑難解答

問題代碼

c = scanf("%d", &c);  // 錯誤:scanf 返回匹配項數(1),非輸入值
switch (c) { ... }    // c 永遠為 1,無法進入 case 0/2/3

錯誤分析

  • scanf 返回成功匹配的參數個數,此處始終返回 1
  • 變量 c 被覆蓋為 1,導致菜單選項判斷失效
  • 刪除操作 n-- 邏輯單一,未真正移除元素

修正方案

scanf("%d", &c);  // 僅讀取輸入到 c
switch (c) { ... }

改進建議

  1. 刪除需指定索引,將後續元素前移:for(i=idx; i<n-1; i++) data[i]=data[i+1]; n--;
  2. 輸入驗證:檢查 scanf 返回值是否為 1
  3. 邊界檢查:防止索引越界

知識點總結

scanf 返回值 ≠ 輸入值。C 語言輸入函數返回狀態碼,實際數據通過指針參數帶回。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved