网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月18日漏签0天
c语言吧 关注:801,820贴子:4,375,592
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 3 下一页 尾页
  • 122回复贴,共3页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

C语言初学者常见问题及解决方案汇总

  • 只看楼主
  • 收藏

  • 回复
  • Riachard_Zhang
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主我最近高强度刷C语言吧,发现有很多初学者常常遇到一些令人迷惑的问题。
然而实际上这些问题高度重复,楼主都有一点不想回答了。
所以,楼主这里将这些常见问题一一复现,指出最常见的原因,并给出解决方案。
不过,先等一下,楼主要弄一个安全的环境来演示


  • 宁醉巧
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
支持


2026-01-18 16:20:37
广告
不感兴趣
开通SVIP免广告
  • Riachard_Zhang
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在楼主准备环境的时候,现在二楼前排给几个提醒:
①好好写你们求助帖的标题,不要随随便便写一些什么“乐乐乐乐乐”、“11111”、“最少五个字”这样仅仅为了满足发贴对标题的要求而随便弄个什么东西把标题的位置占了算数,更不要情绪化地取标题,如“哪位大佬帮我翻译一下这sb人机说什么吗”。好的标题应该指出大概错误,至少要有求助的态度。例如“小白自学c语言应该用什么编译器”、“C语言玫瑰花代码”这样明确指出需要帮助的方面,或者像“求助大佬 帮我诊断一下我的代码”、“小白求助 编译不通过”这种,虽然没能明确指出问题,但是态度良好,让吧友有回复的欲望。
②尽可能使用截图工具,如果确实要用手机拍,请把照片方向调正。无论如何,图片应当包含一下部分:题目、代码、编译结果(如果有)、运行窗口(如果有),平台测评结果(如果有)。我们不会也不愿意算卦来猜你的题目,还有很多错误是与输入输出格式相关的,只有看到题目规定的格式,我们才能指出问题。
③放一张吧主常用的图,这里其实囊括了大部分初学者的问题。



  • Riachard_Zhang
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先,介绍一下主要使用的IDE:

Orwell Dev-C++ 5.11(蓝色图标)和Embarcadero Dev-C++ 6.3(红色图标)
这两个是各学校机房用的比较多的IDE,故以这两个为示范。
我知道还有写学校用Visual Studio Code、Microsoft Visual C++、Turbo C等IDE的,但是因为现在GCC(MinGW)应用最广泛,所以还是以以上两个IDE为主。


  • Riachard_Zhang
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
稍微花了一点点时间,复现出第一个问题,也是最常见的:第一个程序能运行,但是第二个就不能。


===========================================
问题排查:
我们来看底端编译器栏,信息列。
首先看红色的,表示关键性错误,这种错误直接导致程序无法通过编译。
这里是第三行:[Error] ld returned 1 exit status. 意思是链接器(ld.exe)链接时出错,并返回1。这里插入一个知识点,就是正常程序执行到最后,都是返回0,如果没有返回0,就代表程序运行时出现了错误,并因为这个错误而退出程序。
紧接着,我们来看看这行上面的黑色详细信息行怎么写的:File2.c::(.text+0x0): multiple definition of 'main. 翻译过来就是:在File2.c中,再次定义了main函数。
File1.c::(.text+0x0): first defined here. 翻译过来就是:第一次定义在File1.c。
=============================================
错误原因:
这就是最常见的把多个无关的程序放到一个工程里的错误。
=============================================
产生原因:
众所周知,C语言程序从main函数开始执行,那么当一个程序中有两个main函数的时候,从谁开始呢?这个时候,就会报错。不管初学者弄不明白文件和工程的关系,很正常,但是接下来的话就要好好看了。
当一个程序功能比较复杂,模块比较多时,程序员就会把代码按功能分到多个文件中,这些文件共同组成一个工程。因此,一个工程只会生产一个程序,一个程序中只有一个main函数。
通常我们写的程序功能非常简单,因此只要一个文件就够了,此时我们就干脆不创建工程
============================================
解决办法:
很多吧友会告诉小白,把其他文件里的main函数注释掉就可以了,确实很简单,也省掉了解释的麻烦。但是要我说,这就是一种头痛医头、脚痛医脚、而且带有误导性的解决方案。
正确的做法是:不创建工程,或者为每个文件单独创建一个工程。
要判断自己有没有不小心创建工程,也很简单,观察如图红框即可,每个工程(黄色图标)下,只应该有一个文件(白色图标)

有一些吧友的工程(黄色图标)下上面也没有,如下图,就需要单机工程图标前面的加号一下,使它变成如上图的样子

============================================
正确示范:
下图两种其实都可以
第一种,每个工程一个文件:

------------

第二种,不创建工程:



  • GTA小鸡
  • 吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好好好,多写点,我给你置顶,让每个萌新都给我看


  • Zhlty
  • 强能力者
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最支持的一集


  • Riachard_Zhang
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
问题描述:显示中文时乱码,如图

===========================================
问题分析:
不用说,肯定是编码问题
===========================================
实际上,这是一个祖传的问题。要牵扯到汉字编码的发展史和Unicode等内容。
简单来说,MinGW默认使用GB2312/GBK(Windows记事本等地方会显示为ANSI),但是有些IDE会默认保存成UTF-8或UTF-16等格式。
===========================================
解决方案:
很简单,保存的时候选择GB2312/GBK/ANSI就可以了,如图红框所示


2026-01-18 16:14:37
广告
不感兴趣
开通SVIP免广告
  • 四条咸鱼
  • 团子家族
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
字词


  • Riachard_Zhang
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
接下来一个错误又是和ld(链接器)有关的。

===========================================
报错分析:
还是一样,先看红字(关键性错误):

[Error] ld returned 1 exit status. 翻译过来就是:ld退出是返回值1,也就是意味着链接器链接失败了。
那么让我们来看看上一行的详细信息:
cannot open output file C:\……\File.exe: Permission denied. 翻译过来就是:不能打开目标输出文件C:\……\File.exe:权限不足。
通常来说,这个目标输出文件是代码编译产生的,正常来说不会出现权限不够的情况,更有可能是由于文件被占用而导致的无法写入。
===========================================
解决方案:
关掉上一次运行的窗口,再次编译。如果不能解决,就请使用Windows任务管理器关闭对应进程,或者可以使用PowerToys套件中的File Locksmith工具。


  • XeO2
  • 小吧主
    14
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
火前留名(⁄ ⁄•⁄ω⁄•⁄ ⁄)


  • Riachard_Zhang
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好了,今天就想出来这三个,先休息了。如果有吧友看到一些比较经典的问题,可以在这层补充。
注意,这层不是提问用的,是汇总问题用的。
如果遇到了问题需要求助,请先对照上面的三个典型问题,以上三个典例没解决你的问题,那么请发求助帖
再次强调:
①很多问题直接复制下面的报错到百度搜索就能有结果,比吧友回贴快多了。还有一些问题,把英文报错看懂,就明白了,要学会看编译器报的错误,GCC/MinGW的报错已经算是很好了
②好好写你们求助帖的标题,不要随随便便写一些什么“乐乐乐乐乐”、“11111”、“最少五个字”这样仅仅为了满足发贴对标题的要求而随便弄个什么东西把标题的位置占了算数,更不要情绪化地取标题,如“哪位大佬帮我翻译一下这sb人机说什么吗”。好的标题应该指出大概错误,至少要有求助的态度。例如“小白自学c语言应该用什么编译器”、“C语言玫瑰花代码”这样明确指出需要帮助的方面,或者像“求助大佬 帮我诊断一下我的代码”、“小白求助 编译不通过”这种,虽然没能明确指出问题,但是态度良好,让吧友有回复的欲望。
③尽可能使用截图工具,如果确实要用手机拍,请把照片方向调正。无论如何,图片应当包含一下部分:题目、代码、编译结果(如果有)、运行窗口(如果有),平台测评结果(如果有)。我们不会也不愿意算卦来猜你的题目,还有很多错误是与输入输出格式相关的,只有看到题目规定的格式,我们才能指出问题。
④测评平台,如洛谷等,请给出明确的平台名和题号


  • Riachard_Zhang
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
又想起来一个,添加一下:
就是中文分号或者其他本应该用英文标点的地方使用了中文符号。

===========================================
这种问题有一个显著特征,就是[Error] stray '\243' in program,其中'\243'可能是别的数字,但是总体来讲就是英文标点打成了中文标点
解决方法也很简单:把中文标点全部改成英文标点


  • 妳壞
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
现在的ai挺智能的,我一般代码有问题自己找不出来就直接全文copy交给ai就百度的那个文心一言就挺可以的。还能全文注释


2026-01-18 16:08:37
广告
不感兴趣
开通SVIP免广告
  • 楠萍
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
个人觉得还有一件事,就是不会的话最好先去翻书,毕竟书上的都是最基础的东西,这个不像算法题需要引导


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 3 下一页 尾页
  • 122回复贴,共3页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示