gpt4 book ai didi

c - 我试图理解的字符串指针行为

转载 作者:行者123 更新时间:2023-12-02 05:37:17 25 4
gpt4 key购买 nike

我编写了一个 replacechar 函数,它用替换字符替换源字符的实例。该函数的工作原理是字符串按预期更改,但是当我尝试使用该函数的返回值时,puts 只输出一个空行。

谁能解释一下发生了什么,以及我需要在 replacechar 中更改什么才能修复。

#include <stdio.h>  /* puts */
#include <string.h> /* strcpy */
#include <stdlib.h> /* malloc, free */

char* replacechar(char* s, char ch1, char ch2) {
while (*s) {
if (*s == ch1)
*s = ch2;

*s++;
}

return s;
}

int main()
{
char* s = malloc(8);

strcpy(s, "aarvark");

puts(replacechar(s, 'a', 'z')); /* prints blank line */

puts(s); /* prints zzrvzrk as expected */

free(s);

return 0;
}

感谢大家的回复。

我已经改成了这个(现在可以正常工作了)。

char* replacechar(char* s, char ch1, char ch2) {
char* p = s;
while (*p) {
if (*p == ch1)
*p = ch2;

p++;
}

return s;
}

最佳答案

一旦 s 指针递增到超过字符串末尾,它就会返回该指针的值。在replacechar()中创建一个局部变量,并自增,返回s的原始值。

关于c - 我试图理解的字符串指针行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11487412/

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