C++ C++;:将值(指向)设置为0有什么作用?
我有一段代码:C++ C++;:将值(指向)设置为0有什么作用?,c++,pointers,C++,Pointers,我有一段代码: int main() { const int SZ = 100; char buf[SZ]; ifstream in("Test1.txt"); ofstream ou("Test2.txt", ios::app); while (in.getline(buf, SZ)) { char* cp = buf; while (*cp != ':') ++cp; *cp =
int main()
{
const int SZ = 100;
char buf[SZ];
ifstream in("Test1.txt");
ofstream ou("Test2.txt", ios::app);
while (in.getline(buf, SZ)) {
char* cp = buf;
while (*cp != ':')
++cp;
*cp = 0;//<- this line
cp += 2;
ou << cp << ":" << buf << endl;
}
}
程序完成后的Test2.txt如下所示:
Smith:00
Richard:01
Johansson:02
0:Smith
1:Richard
2:Johansson
我很难理解为什么它看起来像这样,我用注释标记的代码块中的行中发生了什么,为什么它会更改输出?我知道它会做什么更改,但我不明白为什么,有人能帮我吗?代码是
- 将输入文件逐行(最多为
-1个字符/行)读入SZ
buf
- 对于每一行:
- 将
设置为指向cp
的前面,然后向前移动buf
以查找cp
字符:'
- 找到后,将
字符替换为':'
(空)字符,然后将'\0'
前进到它前面和下一个字符(cp
数字)'0'
- 最后将值格式化为输出文件中的一行
被写为以null结尾的字符串,从第二个数字开始,在cp
末尾的null终止符结束buf
衰减为buf
指针,因此它也被写为以null结尾的字符串,从char*
的开头开始,到buf
-转换为-的结尾:'
字符'\0'
- 将
- 将输入文件逐行(最多为
-1个字符/行)读入SZ
buf
- 对于每一行:
- 将
设置为指向cp
的前面,然后向前移动buf
以查找cp
字符:'
- 找到后,将
字符替换为':'
(空)字符,然后将'\0'
前进到它前面和下一个字符(cp
数字)'0'
- 最后将值格式化为输出文件中的一行
被写为以null结尾的字符串,从第二个数字开始,在cp
末尾的null终止符结束buf
衰减为buf
指针,因此它也被写为以null结尾的字符串,从char*
的开头开始,到buf
-转换为-的结尾:'
字符'\0'
- 将
0
的指针。提示:这不是设置指向0
的指针。为什么是“\0”而不是“0”?因此,如果我将字符设置为“something0something”,它将另存为“something”?@Ania0
和'\0'
在分配给字符时是一样的。它们不同于'0'
字符为什么“\0”而不是“0”?因此,如果我将字符设置为“something0something”,它将另存为“something”?@Ania0
和'\0'
在分配给字符时是相同的。它们不同于'0'
字符