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

标签 c arrays pointers

这是我的主要内容:

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/

相关文章:

c++ - 通过子 vector 指针/ View /引用更新 vector

c - ‘{’ token 之前的预期表达式

c - 格式参数太多 [-Wformat-extra-args]

javascript - 如何在 JS 或 jQuery 中打印数组的字段

java - 将整数数组转换为一个长整数

c++ - c 类型数组的返回迭代器?

c - 链接列表代码插入到中间,但不理解一行

c - 使用文件时出错

c - 一种将标准输出输出到屏幕和文件的方法?

c - 具有 cURL 或类似内容的 Cookie 的值