C语言教程-1_0-常见问题汇总
ps:如果各位有遇到什么经典问题,欢迎在下面评论区@我,我会进行补充,谢谢~
常识篇
指的是编程应该有的常识~
字符分类
字符
在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信息.
一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号、一个图形符号或者控制符号等.
字符集
不同的字符集包含的字符个数不一样、包含的字符不一样、对字符的编码方式也不一样.
常见的字符集有:
GB2312:中国国家标准的简体中文字符集.- ASCII:只包含了128个字符,主要为英文字符,阿拉伯数字和一些简单的控制字符.
- GBK字符集.在
GB2312的基础上添加了部分字符,就形成了GBK,完全兼容GB2312. - Unicode字符集.国际标准字符集,可以容纳一百多万个字符.
ASCII字符集
C语言代码仅使用ASCII字符集构成(不考虑字符串).
分成可见字符和不可见字符,即一些控制字符和正常的英文字母,数字标点等可见字符.
其中空格' ',制表符'\t',换行符'\n',回车符'\n',虽然为可见字符,但是是空白字符.
scanf()函数的%s格式控制符在遇到空白字符时会停止.
软件篇
概念的分辨
IDE,编译器,编辑器他们不是一个东西……
IDE:即集成开发环境(Integrated Development Environment),是一个集成的软件,不仅仅可以进行代码的编辑,一般还默认集成了某种(或多种)编译器进行代码编译,还包括了调试功能,甚至还会有代码仓库的管理,协同开发等高级功能,一般较为庞大,不过也有DevC++这样的小型IDE.
常见的IDE有Visual Studio(VS),CLion,Devc++,Xcode等等.他们有的是免费软件,但更多的是收费软件,具体见官方网址.
编译器:即编程语言的编译工具,用于将源代码转为可执行代码,编译器几乎都是方便易用的,而且几乎都是免费的,下载即用.C/C++常用编译器仅有3种:GCC(Linux下,windows移植于Mingw工具链),Clang/LLVM,MSVC(微软家的编译器,VS系列IDE默认的编译器).
编辑器:就跟windows下的记事本一样的…敲代码用的,只不过像VScode,Sublimetext3,Notepad++这样的高级编辑器十分强大,内置了许多高级的编辑功能,而且往往可以通过安装扩展来支持各种其他功能,往往能直接配置编译器进行代码的编译运行,所以甚至可以被改造为一款IDE.
IDE使用
VS配置C/C++环境并创建项目
-
2023年了,就别用VS2019,VS2022之前的版本了…
-
安装的时候只在
工作负荷选一个使用C++的桌面开发,其他的什么都不动!
- 创建项目注意一定是C++的,天天都有人问为什么不能跑代码,一看创建的是C#项目…
- 配置项目名和路径,最好找一个目录,专门存每次的代码,例如
D:\code\My_VS_Code\
- VS编写C代码不能使用scanf等函数,解决方法见:
- 一个项目只对应一个程序,一个程序只能有一个main()入口,哪怕你在一个项目里开了一堆源文件,也只能保留一个main(),因为这些源文件属于一个程序,不理解请移步
谷歌搜索C语言多文件编程 - 待补充
编译器使用
gcc/g++编译
高级文本编辑器配置
VSCode配置C/C++的基本编译/运行调试环境
首先,刚接触C的新手建议离开,一定程度上熟悉了编程的萌新可以逝逝.
VScode的项目设置由目录下的.vscode中的json配置文件控制,我们需要配置3个文件:
c_cpp_properties.json,tasks.json,launch.json
c_cpp_properties.json为C/C++语言相关的一些配置参数;
tasks.json为任务配置文件,其中的每一个子项就是一个任务,我们可以将各种编译任务在这里配置.
launch.json为启动配置文件,用于启动编译后的程序,进行运行或调试;
c_cpp_properties.json
使用这个配置文件对C/C++源文件进行编译选项和环境的配置.
{
"configurations": [
{
"name": "Win32", // 表示这个配置项是为 Win32 平台准备的
"includePath": [ // 指定了用于查找头文件的目录
"${workspaceFolder}/**" // 将会包含工作区文件夹下的所有子目录
],
"defines": [ // 定义宏的数组,这些宏将在编译过程中生效
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0", // 指定 Windows SDK 版本的配置项
"compilerPath": "<path>/mingw64/bin/g++.exe", // 指定编译器路径的配置项,指定了g++编译器的完整路径,这里的<path>是你的mingw安装路径
"cStandard": "c17", // 指定C17标准
"cppStandard": "c++17", // 指定C++17标准
"intelliSenseMode": "windows-gcc-x64" // 使用 Windows 平台上的 GCC 编译器进行 IntelliSense 代码补全和语法检查
}
],
"version": 4
}
tasks.json
这个文件配置了各种任务,我们进行编译操作的配置.
{
"version": "2.0.0",
"tasks": [ // 该列表的每一项都是一个任务
{
"type": "cppbuild", // 类型
"label": "C++ Build", // 重要,任务名
"command": "<path>/mingw64/bin/g++.exe", // 调用g++对C++进行编译
"args": [ // 命令行参数
"-fdiagnostics-color=always",
"-g",
"${file}",
"-std=c++11", // C++11标准
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "<path>/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "使用 g++ 进行c++单个文件的编译"
},
{
"type": "cppbuild",
"label": "C Build",
"command": "<path>/mingw64/bin/gcc.exe", // 调用gcc对C进行编译
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-std=c11", // C11标准
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "<path>/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "使用 gcc 进行c语言单个文件的编译"
},
{
"type": "cppbuild",
"label": "c/c++ debug", // 这个任务专门用于调试
"command": "<path>/mingw64/bin/g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "<path>/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
]
}
launch.json
这里是启动配置,这里配置了调试的配置信息.
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++ debug", // 启动配置的名称
"type": "cppdbg", // C++的debug
"request": "launch",
// inner shell
"program": "${fileDirname}//${fileBasenameNoExtension}.exe", // 启动对应的程序
"args": [],
// 这里可以用于在外部运行
// outer shell
// "program": "C://Windows//System32//cmd.exe",
// "args": [
// "/c",
// "${fileDirname}//${fileBasenameNoExtension}.exe",
// "&",
// "echo.",
// "&",
// "pause",
// ],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false, //设置是否启动外部控制台
// "avoidWindowsConsoleRedirection": true,
"MIMode": "gdb",
"miDebuggerPath": "<path>/mingw64/bin/gdb.exe", // gdb调试器的路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "c/c++ debug" // 十分重要,在启动前需要运行的任务,该任务参见前面的task.json中的对应任务,即在启动调试前先进行编译
}
]
}
代码篇
输出中文乱码
以"小熊猫C++"IDE为例.
检查右下角是否为UTF-8编码,如果是,则需要转换为ANSI编码:
其他软件类似,这种问题就是GBK和UTF-8编码不兼容的问题.
Windows默认GBK编码,因此兼容性不佳(一般都是用UTF-8编码比较常见).

浙公网安备 33010602011771号