关于字符处理的有关问题
关于字符处理的问题Quote: 引用:从q p到 *q \0,相当于中间字符串有被\0截断。Quote: 引用:char d
关于字符处理的问题
[解决办法]*q = '\0'
这是把\ 也就是字符'\\' 替换为字符串结束符'\0';
那么对于字符串,后面的一切,都被无无视了。
因为'\0'是字符串结束符,是字符串的结束标志。
字符串到此结束。
无论是C的库函数,还是字符串常量(字面值)本身;
'\0'都代表字符串到此为止,结束了。
所以对于,C字符串,'\0'有独特的含义。就是结束字符串。
*q 这种用法,代表指针的值,所表示的地址中的数据,即指针指向的内容。
所以这里的*,称为指针的解引用运算符。
指针的值是个地址。
这个地址里的数据的类型,就是指针的类型。
这个地址里的数据,就是指针所指的数据。
*q 就是指针q 所指的数据,就是“D:\OperatingSP1\Debug\Operating.exe”
Operating.exe前面的\
替换成\0 字符串,就成了“D:\OperatingSP1\Debug”
注意 \0是一个字符,即 char(0)值为 0的字符。
实际内容是“D:\OperatingSP1\Debug\0Operating.exe”
Operating.exe在\0后,不是字符串的一部分了。
所以字符串的值是“D:\OperatingSP1\Debug”
strcat(dirPath, ">");后
字符串,就成了“D:\OperatingSP1\Debug>”
实际内容是“D:\OperatingSP1\Debug>\0perating.exe”
perating.exe在\0后,不是字符串的一部分了。
字符串通常用他的第一个字符的地址表示,并且以'\0'结束。
如果他的某个位置被替换为'\0';
那么,此后的数据,对于字符串,就视为不存在了,所以Operating.exe这部分就被截断了。
如果一个字符串不是常量,那么可以把他的任意位置数据替换为'\0',
后面的数据就不再是字符串的一部分了。