我跑这个代码:在printf语句中使用时,strcpy或strcat是否会对字符串进行不必要的更改?
#include<stdio.h>
#include<string.h>
int main()
{
static char str1[] = "dills";
static char str2[20];
static char str3[] = "Daffo";
int i,j;
i = strcmp(strcat(str3, strcpy(str2, str1)), "Daffodills");
printf("%d", i);printf("\n");
printf("%s",str1);printf("\n");
printf("%s",str2);printf("\n");
printf("%s",str3);printf("\n");
printf("%s",strcpy(str2, str1));printf("\n");
printf("%s",strcat(str3, strcpy(str2, str1)));
return 0;
}
输出:
0
ills
dills
Daffodills
ills
Daffodillsills
- 如何STR1成了 “顽疾”?
- 为什么strcpy正在返回“弊病”?
- 即使strcat(str3,strcpy(str2,str1))返回Daffodillsills,但strcmp的回答为0。为什么?
你觉得呢?你分析了中间结果吗?为什么不?调试器说什么?你期望什么? – Olaf
'str3'对于你的第一个'strcat()'调用来说还不够大。您可能会覆盖您的其他阵列的一部分。 – Dmitri
您应该在每行的第一个'printf()'格式字符串中包含换行符,而不是每行调用'printf()'两次。即:'printf(“%d”,i); printf(“\ n”);'应该是'printf(“%d \ n”,i);' –