一直对字符串的结束符"\0"的具体意义感到困惑,今天实际测试了一下,最终我找出来了答案。
#include <cstdio>
#include <cstring>
#pragma warning(disable:4996)
#define MAXN 2000
int main(int argc, char **argv){
char szFileName[MAXN] = "\0";
//char szFileName[MAXN] = { 0 };
printf("%d %d\n", szFileName[0], '0');
//printf("%d %d\n", szFileName[1], '0');
/*
for (int i = 0; i < argc; i++)
{
strcat(szFileName, argv[i]);
strcat(szFileName, " ");
}
printf("%s\n", szFileName);
*/
return 0;
}
通过以上程序,我们不难发现“\0”即为转义字符\0,也就是ASCII码表中的第0号。
转义字符表:
所有的转义字符和所对应的意义:
转义字符
|
意义
|
ASCII码值(十进制)
|
\a
|
响铃(BEL)
|
007
|
\b
|
退格(BS) ,将当前位置移到前一列
|
008
|
\f
|
换页(FF),将当前位置移到下页开头
|
012
|
\n
|
换行(LF) ,将当前位置移到下一行开头
|
010
|
\r
|
回车(CR) ,将当前位置移到本行开头
|
013
|
\t
|
水平制表(HT) (跳到下一个TAB位置)
|
009
|
\v
|
垂直制表(VT)
|
011
|
\\
|
代表一个反斜线字符''\'
|
092
|
\'
|
代表一个单引号(撇号)字符
|
039
|
\"
|
代表一个双引号字符
|
034
|
\0
|
空字符(NULL)
|
000
|
\ddd
|
1到3位八进制数所代表的任意字符
|
三位八进制
|
\xhh
|
1到2位十六进制所代表的任意字符
|
二位十六进制
|
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换
下面为ASCII码表:
另外附上一段程序证明\0即为ASCII码中的0
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
char a[20] = "Hi,Kemeng~";
printf("%s\n", a);
a[2] = 0;
printf("%s\n", a);
return 0;
}