C語言新手的100個報錯解法 已更新11個錯誤

學習目標

  1. 收藏文章報錯可以過來查

[更新數據]
此文將會持續更新,收錄錯誤信息,若本文沒有收錄記得聯系我~ CSDN 1_bit
持續更新中…
[發布日期:2020年11月16日 14:55:00]
更新:
暫無

C語言教程

C語言真的很難嗎?那是你沒看這張圖,化整為零輕松學習C語言。
第一篇:(一)脫離學習誤區
第二篇:(二)C語言沒那么難簡單開發帶你了解流程
第三篇:(三)輕輕松松理解第一個C語言程序
第四篇:(四)語言的基本數據類型及變量
第五篇:(五)C語言的變量、常量及運算
第六篇:(六)輕輕松松了解C語言的邏輯運算
第七篇:(七)C語言的循環分分鐘上手
第八篇:(八)了解基本數組還不是那么簡單
第九篇:(九)C語言二維數組與循環嵌套
第十篇:(十)C語言的指針原來是這樣
第十一篇:(十一)C語言自定義函數真的很簡單
第十二篇:(十二)原來結構體是這么回事
第十三篇:(十三)socket服務端編寫

推薦

歡迎大家關注公眾號,公眾號每滿1024及1024倍數則會抽獎贈送機械鍵盤一份+IT書籍2份喲~
在這里插入圖片描述

最近發了C語言的基礎教程,得了很多C語言初學者的支持,并且像我詢問了很多問題;通過了解大多數的C語言新手的問題得知,大多數的同學都是犯的類似的錯誤,在此我編寫一篇文,大家若出現問題,查看編輯器的提示報錯信息,復制關鍵字后,在該文章搜搜內容,即可查看,若沒有查詢到可以聯系我,我將在此文收錄該錯誤~ 多謝支持~

錯誤及解決方案如下

錯誤示例1 報錯索引:expected ‘)’ before ‘;’ token

簡介: 第一個C語言程序“HelloWorld”,在一部分新手學習的時候,經常會出現中英文標點混打情況,在絕大多數編程中,標點符號皆是英文的標點符號。
錯誤示例:

#include<stdio.h>
int main()
{printf("HelloWorld";
}

說明: 以上示例,在 printf("HelloWorld")后的反括號錯將英文的反括號")“打成了中文的”)"。新手不注意觀察將會極難找到這個錯誤。

編輯器典型報錯提示:expected ')' before ';' token
報錯解析: 由于反括號")“錯誤打成了”)",導致編譯器在解析代碼時,發現成對的圓括號少了一半。編譯器這時是懵的,所以通過編輯器問你expected ')' before ';' token;這句報錯表示“我需要在在分號前的括號你把他丟哪去了?我找不到了,你要還給我”。其實我們通過仔細觀察中文的標點要比英文的標點大一點。
編寫建議: 編寫代碼時最好是成對輸入括號,不要輸入一個括號后接著輸入",然后又繼續輸入HelloWorld;推薦的方式是先輸入成對的符號,例如先輸入一對英文括號(),隨后在一對括號中輸入英文的雙引號"",接著再往雙引號內輸入HelloWorld,這時就保證了標點符號的統一。
正確代碼:

#include<stdio.h>
int main()
{printf("HelloWorld");
}

錯誤示例2 報錯索引: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘<’ token

簡介: 依舊使用第一個C語言程序“HelloWorld”,在一部分新手學習的時候,經常會出現在頭文件飲用前少打#號的情況;這時候去搜索報錯,問題依舊找不到解決辦法。
錯誤示例:

include<stdio.h>
int main()
{printf("HelloWorld");
}

說明: 以上示例,在 include<stdio.h>前,少打了#號,由于可能會與某一些語言的“#”號注釋記混,就導致了該問題。

編輯器典型報錯提示:expected '=', ',', ';', 'asm' or '__attribute__' before '<' token
報錯解析: 由于少打了#號,導致編譯器在解析代碼時,“胡言亂語”,因為頭文件聲明并沒有太多的內容給予編譯器提示,編譯器只知道,你在<號前少了什么東西,反正就是錯了,編譯器自己也很懵。所以通過編輯器問你expected '=', ',', ';', 'asm' or '__attribute__' before '<' token;這句報錯表示“我現在啥都不知道,我只懂你在這個地方搞錯了。因為我被你嚇到了,我自己都差點胡言亂語”。這個時候可能你上網搜都搜不到對應的解決辦法,那是因為這個錯,可能錯的不錯(有點尷尬)。
編寫建議: 頭文件就記住#開頭就ok。
正確代碼:

#include<stdio.h>
int main()
{printf("HelloWorld");
}

錯誤示例3 警告索引: incompatible implicit declaration of built-in function ‘printf’

簡介: 依舊使用第一個C語言程序“HelloWorld”,在一部分新手學習的時候,經常會漏掉頭文件的輸入,當然這個問題在某些情況下不會報錯,可能會提示一個警告。
錯誤示例:

int main()
{printf("HelloWorld");
}

說明: 以上示例,沒有輸入頭文件 #include<stdio.h>前。

編輯器典型報錯提示:[Warning] incompatible implicit declaration of built-in function 'printf'
報錯解析: 由于少打了圖問價引用,導致編譯器在解析代碼時給你了點人情,畢竟頭文件知道printf這些熟人是哪個地方的,所以就免為其難的幫了你一下。
編寫建議: 頭文件是代碼中使用系統函數的支撐,你需要使用什么函數必須告訴編譯器這些東西在哪,如果編譯器不熟,它就無法幫你去找到這些東西。
正確代碼:

#include<stdio.h>
int main()
{printf("HelloWorld");
}

錯誤示例4 報錯索引: undeclared (first use in this function)

簡介: 在編寫C語言時,由于C語言是區分大小寫的,若沒達到設定的標記一致,則會出現錯誤;例如a與A是兩個東西,Age和age也是兩個東西。所以在進行程序別寫時,一定要注意標記的統一。
錯誤示例:

#include<stdio.h>
int main()
{int a=0;printf("%d",A);
}

說明: 以上示例,定義了一個整型變量a,并且初始化值等于0;但是在輸出變量a的時候錯誤的將a寫成了A,導致錯誤的出現。

編輯器典型報錯提示:[Error] 'A' undeclared (first use in this function)
報錯解析: 由于將a打成了大寫A,編譯器在進行編譯的時候,編譯器發現這個A它是第一次遇見,并不知道是啥,所以就將這個信息告訴了你。
編寫建議: 這種情況無法避免,通過報錯提示是較為容易的解決方式,并且變量命名最好有“意義”,可以表達當前變量的含義。
正確代碼:

#include<stdio.h>
int main()
{int a=0;printf("%d",a);
}

錯誤示例5 報錯索引: expected declaration or statement at end of input

簡介: 在編寫C語言時,由于C語言是有區塊、有層級的,并且內容需要通過一定的符號表示當前層級或塊的開始或結束,或者理解為有始有終。若在編寫缺少開頭標記或結束標記將會產生錯誤;較為容易出現的錯誤是結束標記的缺少。
錯誤示例:

#include<stdio.h>
int main()
{

說明: 以上示例,使用helloworld為示例,在helloWorld程序結束后并沒有使用花括號進行結尾說明,導致編譯器報錯。

編輯器典型報錯提示:expected declaration or statement at end of input
報錯解析: 由于尾部沒有添加結束符,編譯器在進行編譯的時候,發現尾部沒有添加標記,所以就將這個信息告訴了你。那為什么編譯器不自動幫你加上去?那是因為編譯器編譯的時候無法判斷你是要做什么,不能從主觀角度考慮你編寫程序產生的錯誤,所以報錯后只能自己修改。
編寫建議: 編寫代碼時最好是成對輸入括號,不要輸入一個括號或后接著輸入,推薦的方式是先輸入成對的符號,例如先輸入一對英文括號()或{},隨后在在其中編寫代碼內容。
正確代碼:

#include<stdio.h>
int main()
{printf("HelloWorld");
}

錯誤示例6 報錯索引: 無報錯

簡介: 在編寫C語言時,使用scanf接收值一定要注意取地址,變量取地址使用取地址符“&”。
錯誤示例:

#include<stdio.h>
int main()
{int a=0;scanf("%d",a);
}

說明: 以上示例, 在將至存入變量a時由于沒有加取地址,這時編譯器不會報錯,因為這個地方是地址,變量a為0也可以作為地址,但是會發生不可估計的后果如程序運行時程序崩潰。

編輯器典型報錯提示:無報錯,編譯順利
報錯解析: 無報錯,但是程序運行時將會出現程序崩潰等情況”。
編寫建議: 熟記語法規則,這是對整體編寫規則的不了解。
正確代碼:

#include<stdio.h>
int main()
{int a=0;scanf("%d",&a);
}

錯誤示例7 報錯索引: 無報錯

簡介: 在編寫C語言時,使用scanf接收多個值,在scanf中最好使用顯式來表示%d或者其它格式說明符的間隔,若是%d%d默認使用空格隔開。
示例:

#include<stdio.h>
int main()
{int a=0;int b=0;scanf("%d%d",&a,&b);printf("%d,%d",a,b);
}

說明: 以上示例, 輸入值時,需要輸入一個值使用空格后再輸入一個值再按enter鍵確認。或者輸入一個值后按下enter,隨后再輸入一個值,此時將會給兩個變量賦值。

編輯器典型報錯提示:無報錯,編譯順利
報錯解析: 無報錯,但是程序運行時自己不清楚如何賦值將會導致某一值賦值失敗”。
編寫建議: 推薦使用scanf("%d,%d",&a,&b);或其他字符間隔。
代碼:

#include<stdio.h>
int main()
{int a=0;int b=0;scanf("%d %d",&a,&b);printf("%d,%d",a,b);
}

錯誤示例8 報錯索引: 無報錯

簡介: 在編寫C語言時,使用兩個等于號表示判斷等于號左右兩邊的值是否相等;使用一個等于號表示將等于號右邊的值賦值給左邊。
錯誤示例:

#include<stdio.h>
int main()
{int a=0;if(a=1){printf("a等于1");}
}

說明: 以上程序if判斷中將會一直判斷正確,因為并沒有使用兩個等于號判斷,一個等于號是賦值,這個結賦值操作是正確的,將會為Ture。

編輯器典型報錯提示:無報錯,編譯順利
報錯解析: 無報錯,if永遠判斷正確”。
編寫建議: 熟悉語法規則。
代碼:

#include<stdio.h>
int main()
{int a=0;if(a==1){printf("a等于1");}
}

錯誤示例9 報錯索引: 無報錯

簡介: 在編寫C語言時,使用switch若只想進行常規判斷,則必須在每一個case塊內,代碼結束的末端添加break表示跳出;若未添加,則會導致錯誤程序一直運行到下一個case塊內代碼,直到結束或遇見break為止。
錯誤示例:

#include<stdio.h>
int main()
{int a=0;switch(a){case 0:printf("等于0\n");case 1:printf("等于1\n");break;case 2:printf("等于2\n");default:printf("未知\n");}}

說明: 以上進行case判斷后將會運行 printf("等于0\n");以及printf("等于1\n");代碼。

編輯器典型報錯提示:無報錯,編譯順利
報錯解析: case判斷正確后將會一直運行之后未加break的case塊代碼。
編寫建議: 熟悉語法規則。
代碼:

#include<stdio.h>
int main()
{int a=0;switch(a){case 0:printf("等于0\n");break;case 1:printf("等于1\n");break;case 2:printf("等于2\n");break;default:printf("未知\n");}}

錯誤示例10 報錯索引: called object ‘printf’ is not a function or function pointer

簡介: 在編寫C語言時,勿將系統函數或其它有含義的標記作為變量或其它使用。
錯誤示例:

#include<stdio.h>
int main()
{int printf=0;printf("%d",printf);
}

**說明:**使用了輸出函數printf作為變量,這是不允許的。

編輯器典型報錯提示:called object 'printf' is not a function or function pointer
報錯解析: 編譯器告訴你,你這個東西用錯了,在這里不是這樣用的,反正編譯器自己就是不給你用。就像你進一個學校,校長叫小明,你說你也叫小明為什么不能進。
編寫建議: 熟悉變量命名規則。
代碼:

#include<stdio.h>
int main()
{int printf_v=0;printf("%d",printf_v);
}

錯誤示例11 報錯索引: 無報錯

簡介: 在編寫C語言時,勿將越界使用數組。
錯誤示例:

#include<stdio.h>
int main()
{int a[2]={0,1};printf("%d",a[3]);
}

**說明:**使用了未確定的區域值,將會造成后果不可控,輸出的值也是隨機的。

編輯器典型報錯提示:
報錯解析: 無。
編寫建議: 檢查數組,編寫數組使用函數,檢查長度再賦值。
代碼:

#include<stdio.h>
int main()
{int a[2]={0,1};printf("%d",a[1]);
}

我的博客即將同步至 OSCHINA 社區,這是我的 OSCHINA ID:1_bit,邀請大家一同入駐:https://www.oschina.net/sharing-plan/apply

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287690.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【遙感數字圖像處理】實驗:遙感圖像顯示與數據輸入/輸出(Erdas版)

一、實驗平臺&#xff1a;Erdas 9.1 二、實驗內容&#xff1a;視窗功能簡介、圖形和圖像顯示操作、實用菜單操作、顯示操作、AOI菜單操作、矢量和柵格菜單、數據的輸入輸出等。 三、實驗目的&#xff1a;初步了解Erdas的主要功能模塊&#xff0c;在此基礎上&#xff0c;掌握視…

在Windows Server2016中安裝SQL Server2016(轉)

在Windows Server2016中安裝SQL Server2016&#xff08;轉&#xff09; 轉自&#xff1a; http://blog.csdn.net/yenange/article/details/52980135 參考&#xff1a; SQL Server2016企業版 附全版本key - moonpure的專欄 - CSDN博客 http://blog.csdn.net/moonpure/article/d…

mysql的復雜查詢_mysql復雜查詢

所謂復雜查詢&#xff0c;指涉及多個表、具有嵌套等復雜結構的查詢。這里簡要介紹典型的幾種復雜查詢格式。一、連接查詢連接是區別關系與非關系系統的最重要的標志。通過連接運算符可以實現多個表查詢。連接查詢主要包括內連接、外連接等。假設有Student和Grade兩個表如下&…

數據庫調優要點紀要

數據庫瓶頸一般在IO和CPU 1、少用group by, order by 2、通過索引來排序&#xff08;不要所有字段都用索引&#xff0c;因為insert、update要重構索引很耗時&#xff09; 3、避免select * 4、少用join 5、join和子查詢&#xff0c;還是用join來代替子查詢吧 6、少用or 7、用uni…

Unity3D 之UGUI 滑動條(Slider)

這里來講解下UGUI 滑動條(Slider)的用法 控件下面有三個游戲對象 Background -->背景 Fill Area --> 前景區域 Handle Slide Area --> 滑動條 Slider的屬性 其他幾個設置和其他控件都差不多&#xff0c;這里來講解幾個特有的屬性。 Direction -->方向 Whole Number…

Android Studio導入別人的module提示錯誤Plugin with id ‘com.jfrog.bintray‘ not found.

1 問題 Android Studio導入別人的module提示錯誤如下 Plugin with id com.jfrog.bintray not found. Plugin with id com.github.dcendents.android-maven not found 2 解決辦法 在我們的項目的build.gradle添加如下配置 buildscript {repositories {google()jcenter()}dep…

C語言真的很難嗎?那是你沒看這張圖,化整為零輕松學習C語言。

真不難 C語言難不難&#xff1f;這個問題是相對的&#xff0c;對于找到合適方法學習C語言的同學想必是覺得很簡單&#xff1b;但對于一部分同學來說&#xff0c;沒有眾觀全局就會誤以為剛入門就需要學習龐大的知識&#xff0c;學著學著開始看不懂&#xff0c;由于心理作怪&…

【中間件】.net Core中使用HttpReports進行接口統計,分析, 可視化, 監控,追蹤等...

HttpReports 基于.Net Core 開發的APM監控系統&#xff0c;使用MIT開源協議&#xff0c;主要功能包括&#xff0c;統計, 分析, 可視化&#xff0c; 監控&#xff0c;追蹤等&#xff0c;適合在微服務環境中使用。官方地址&#xff1a;https://www.yuque.com/httpreports/docs/u…

【遙感數字圖像處理】實驗:遙感影像輻射糾正(大氣糾正)完整操作圖文教程(Erdas版)

一、實驗平臺:Erdas 9.1 二、實驗數據:dmtm.img 三、實驗內容:利用回歸分析法校正影像 四、實驗原理:大氣散射只影響短波波段,長短波進行對比,找出影響短波的程輻射值,將其減去 五、實驗目的:掌握回歸分析法校正影像的方法及步驟,能熟練地對影像進行校正 六、實…

Android之開源視頻壓縮框架RxFFmpeg的commands設置

1 Android視頻壓縮框架 地址:https://github.com/microshow/RxFFmpeg 2 問題 用ffmpeg進行壓縮的時候,我們需要采用ffmpeg命令壓縮官網給的命令如下 String text = "ffmpeg -y -i /storage/emulated/0/1/input.mp4 -vf boxblur=25:5 -preset superfast /storage/emul…

Acitivty生命周期

為什么80%的碼農都做不了架構師&#xff1f;>>> Acitivty 有七個生命周期&#xff1a; onCreate&#xff1a;當第一次調用一個Activity就會執行onCreate方法 onStart&#xff1a;當Activity處于可見狀態的時候就會調用onStart方法 onResume&#xff1a;當Activity可…

listview嵌套gridview

1.首先要自定義一個繼承gridview的類 public class MyGridView extends GridView {public boolean hasScrollBar true;public MyGridView(Context context) {super(context);}public MyGridView(Context context, AttributeSet attrs) {super(context, attrs);}Overrideprotec…

還不懂你現在學習的編程語言能做什么?還不懂如何進階?過來看圖

前言說七說八 本篇文章的配圖標注、內容并不代表僅有&#xff1b;本篇僅以個人經驗及當前大學&#xff08;大專、本科&#xff09;相關課程作對比&#xff0c;列出比較常規的語言發展走向及相關技術&#xff1b;再次重申&#xff0c;本圖及本文所涉及的技術發展走向并不代表著…

IT新起之秀

辭職以后自己比較迷茫&#xff0c;不知道自己能干什么&#xff0c;09年畢業到現在雖然工作經驗有7、8年&#xff0c;但是感覺自己什么都不會&#xff0c;除了自己能下車間別的好像也做不成&#xff0c;沒有一技之長。我更像是一個經驗用了7、8年而不是有7、8年的經驗 在齊魯人才…

【遙感數字圖像處理】實驗:遙感影像幾何糾正完整操作流程(Erdas版)

☆☆☆ 幾何糾正預備知識 ☆☆☆ 1、幾何變形誤差的影響因素 遙感器本身引起的畸變外部因素引起的畸變處理過程中引起的畸變2、需要做精糾正的情況 景與景之間作比較GIS建模之前監督分類時提取樣本創建高精度比例尺的影像地圖與矢量數據疊加源于不同比例尺的地圖之間比較提取精…

openid 釘釘_釘釘開發入門,微應用識別用戶身份,獲取用戶免登授權碼code,獲取用戶userid,獲取用戶詳細信息...

最近有個需求,在釘釘內,點擊微應用,獲取用戶身份,根據獲取到的用戶身份去企業內部的用戶中心做校驗,校驗通過,相關子系統直接登陸;就是在獲取這個用戶身份的時候,網上的資料七零八落的,找的人煩躁的很,所以自己記錄一下;實現這個要求,有好幾種方式,使用ISV方式相對來說比較簡單…

趣味二維碼生成

1背景介紹 最近在 Github 看到了一個有趣的項目 amazing-qr&#xff0c;它支持生成普通二維碼&#xff0c;帶圖片的藝術二維碼&#xff0c;動態二維碼。項目是用 python 編寫的&#xff0c;以命令行的方式運行生成&#xff0c;不太方便調用&#xff0c;因此&#xff0c;我…

學習進度博客十二

本周學習軟件工程所花時間為&#xff1a;4小時 代碼&#xff1a;200行 博客發表篇數&#xff1a;3 了解到的知識點&#xff1a;這周我們開始了第二次沖刺階段 轉載于:https://www.cnblogs.com/wulun/p/5610433.html

Android Studio提示No virtual method asBitmap()Lcom/bumptech/glide/RequestBuilder

1 問題 android studio導入別人項目的module,運行點擊app,程序奔潰&#xff0c;錯誤日志如下 Process: com.example.chenyu, PID: 6302java.lang.NoSuchMethodError: No virtual method asBitmap()Lcom/bumptech/glide/RequestBuilder; in class Lcom/bumptech/glide/RequestM…

電腦開機后,就會自動運行chkdsk,我想取消chkdsk,怎么取消

&#xfeff;&#xfeff;每次開機都自動檢查磁盤&#xff0c;檢測通過后下次還是一樣,NTFS/FAT32分區都有可能有這樣的情況&#xff0c;即使重裝系統&#xff0c;仍可能出現同樣情況&#xff0c;但是硬盤可以通過Dell 隨機帶的檢測程序解決方法&#xff1a;在命令行窗口中輸入…