gpt4 book ai didi

c++ - 函数strchr的使用

转载 作者:行者123 更新时间:2023-11-28 01:51:47 31 4
gpt4 key购买 nike

我遇到了关于函数strchr的使用问题,我的代码是

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
char linebuf[1000];
int main()
{

char linebuf[] = "sortie.bin:8276 bytes";
char *colonPos = strchr(linebuf,':'); // strchr returns the pointer of ":"
cout<<colonPos<<endl; // display: ":8276 bytes"
cout<<*colonPos<<endl; // display: ":"
cout<<linebuf<<endl; // display: "sortie.bin:8276 bytes"
*colonPos = 0;
cout<<linebuf<<endl; // display :"sortie.bin"
return 0;

我的问题是为什么:当我输入 *colonPos = 0 时,linebuf 发生了变化,“:”之后的所有内容都被取消了,但实际上我并没有改变 linebuf 的任何内容。

最佳答案

colonPos 是指向 linebuf 中的 : 字符的指针。当您将 : 替换为 \0 时,您正在“截断”该字符串,因为 C 字符串是“空终止”的,这意味着按照惯例它们会在第一个零字节处停止。

如果将 C 字符串的第 N 个字符设置为 \0(零字节),则该字符串的长度最多为 N 个字符。这就是 C 字符串的定义方式。

关于c++ - 函数strchr的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42766460/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com