gpt4 book ai didi

c - 学习 C 指针我无法弄清楚为什么这不起作用(K&R 练习 5-2)

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

好的,所以我实际上正在阅读 K&R C 书(我知道它很旧并且有很多过时的东西,特别是在安全方面,但我只是想做练习)我一直在玩练习 5- 2 我需要用指针实现我自己的 strcat。我的代码如下:

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

char *Strcat(char *string1, const char *string2);

int main(void){
char string1[100]="hello";
char string2[100]="1234";
printf("%s",Strcat(string1,string2));
return 0;
}

char *Strcat (char *string1, const char *string2){
int i=0;
char *temp=string1;
while(*string1){// move the pointer to find the end of the string
++string1;
}
while(*string1++=*string2++)//copy string 2 at the end of string 1
;
puts(string1);//print string 1 concatenated with string 2
return temp;//send back temp pointing to string1 for printing
}

我的问题是,为什么如果我尝试在函数内打印 string1,它只会打印空白?它不应该打印整个字符串吗?如果我打印 temp 它很好,因为它运行打印函数直到它找到 '\0' 但是当尝试使用字符串 1 时它似乎位于 '\0' 指针不应该回到 string1[0] 位置吗?这可能很简单,但我不明白为什么会这样......

感谢任何帮助!谢谢!!!

最佳答案

++string1 对等价于 string1 = string1 + 1 的变量有影响。因此,当您尝试打印 string1 时,它不再指向原始字符串的开头。

关于c - 学习 C 指针我无法弄清楚为什么这不起作用(K&R 练习 5-2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40120792/

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