gpt4 book ai didi

c - 如何改变char指针的值?

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:16 24 4
gpt4 key购买 nike

这是我的主要内容:

int main(void)
{
char w1[] = "Paris";
ChangeTheWord(w1);
printf("The new word is: %s",w1);
return0;
}

我需要在这个函数中更改 w1[] 的值:

ChangeTheWord(char *Str)
{

...

}

最佳答案

到目前为止所有答案都是正确的,但 IMO 不完整。

在 C 中处理字符串时,避免缓冲区溢出很重要。

如果 ChangeTheWord() 试图将单词更改为太长的单词,您的程序将崩溃(或至少显示未定义的行为)。

最好这样做:

#include <stdio.h>
#include <stddef.h>

void ChangeTheWord(char *str, size_t maxlen)
{
strncpy(str, "A too long word", maxlen-1);
str[maxlen] = '\0';
}

int main(void)
{
char w1[] = "Paris";
ChangeTheWord(w1, sizeof w1);
printf("The new word is: %s",w1);
return 0;
}

通过这个解决方案,函数被告知允许访问的内存大小。

请注意,strncpy() 并不像乍一看所怀疑的那样工作:如果字符串太长,则不会写入 NUL 字节。所以你必须自己照顾自己。

关于c - 如何改变char指针的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22219933/

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