gpt4 book ai didi

c - 在 C 中操作字符串的两种方式有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:46 24 4
gpt4 key购买 nike

我想复制一个字符串 "str"到 p 。首先我使用我注释掉的代码,但是输出是空的。所以我尝试了评论区下面的代码,它起作用了。在 C 中操作字符串的两种方法有什么区别?提前致谢。

    #include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
char *str = "laekfja";
char *p = (char*)malloc(51 * sizeof(char));

//First try.
/* while(*str)
{
*p++ = *str++;
}
*p = '\0';
printf("%s\n", p);
*/

//Second try.
int i = 0;
while(i < strlen(str))
{
p[i] = str[i];
i++;
}
p[i] = '\0';
printf("%s\n", p);
return 0;
}

最佳答案

这两种方法都可以复制字符串。第一种方法的错误是在循环完成时打印出复制的字符串:

printf("%s\n", p);

此时,p 指向插入副本的最后一个字符,即空字符,而不是字符串的开头。所以 printf() 正确地没有打印任何内容。

关于c - 在 C 中操作字符串的两种方式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58722310/

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