C虐我千百遍啊,求助strcpy在这里的用法
源程序是:#include <stdio.h>
#include <string.h>
main()
{
int i;
char a[] = "How are you!";
for (i = 0; a; i++)
if (a == ' ')
strcpy(a, &a);
printf("%s\n", a);
}
求大神讲讲这段代码,strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符,这里又结合了数组。看不懂,扎心啊 我给你模拟一遍循环把~
第一次: i = 0a = H if不成立~
第二次: i = 1a = o if不成立~
第三次: i = 2a = wif不成立~
第四次i = 3a = ' 'if成立 strcpy把参数二的地址给参数一~简单说~ 就是现在的a数组的首地址不再是'H' 是 空格后面的一个~ 字符 'a'
接着循环~
第五次 i = 4a = y if不成立
第六次 i = 5a = oif不成立
第七次i = 6 a = uif不成立
第八次i = 7 a = ! if不成立
第九次i = 8 a = '\0' 循环条件不成立,循环结束~ 风过无痕丶 发表于 2018-3-22 19:12
我给你模拟一遍循环把~
第一次: i = 0a = H if不成立~
第四次是 字符串复制函数, 参数2地址开始的字符串 复制到参数1里 包括 \n 一起 复制
这时候 字符串数组S 里的 数据 就变成了are you!\n 38299676 发表于 2018-3-22 19:49
第四次是 字符串复制函数, 参数2地址开始的字符串 复制到参数1里 包括 \n 一起 复制
这时候 字符串数 ...
{:10_245:}所以说我的回答有什么问题吗~我确实说的是第四次啊~还有 哪里来的s数组啊~ 本帖最后由 38299676 于 2018-3-22 21:23 编辑
风过无痕丶 发表于 2018-3-22 20:19
所以说我的回答有什么问题吗~我确实说的是第四次啊~还有 哪里来的s数组啊~
我说的第4次应该改成 复制 不是给地址 这时候 a[]里的值 变成了“are you!\n"
页:
[1]