求三个字符串的最大者
书上的程序如下:
#include <stdio.h>
#include <string.h>
void main()
{
char string[20];
char str[3][20];
int i;
for(i=0;i <3;i++)
gets(str[i]);
if(strcmp(str[0],str[1])> 0)
strcpy(string,str[10]);
else strcpy(string,str[1]);
if(strcmp(str[2],string)> 0)
strcpy(string,str[2]);
printf( "\nthe largest string is\n%s\n ",string);
}
疑问:
1.如果string中先存入str[0]为chinachina,然后再由strcpy(string,str[2])
如果str[2]是:xxxxx这样的结果是不是应该是:xxxxxxchina啊.
2.如果把前面的str[3][20]定义成str[3][10]呢?
3.原程序中输入chinachina CHINA xxxxx运行出结果是错误的,那是出错了?
4.我的VC6.0在修改程序的时候,不能中间插入东西了,插一个字符会把后面的一个字符盖掉,想加一行也不能.怎么设置? 我记得已前可以的.
[解决办法]
1.如果string中先存入str[0]为chinachina,然后再由strcpy(string,str[2])
如果str[2]是:xxxxx这样的结果是不是应该是:xxxxxxchina啊.
strcpy 是覆盖性质的,
strcpy(string,str[2])后,
str[2]就是 china 了, 原来的字符串被覆盖了 ······
[解决办法]
1.如果string中先存入str[0]为chinachina,然后再由strcpy(string,str[2])
如果str[2]是:xxxxx这样的结果是不是应该是:xxxxxxchina啊.
我指的是结果是string中的结果,不是str[2]的.
________________________________________________________
结果就是xxxxx 啊。。
2.如果string[20]刚开始没有赋值,它的内容无法预知..如果str[1]只有10位的话,那把str[1]
strcpy到string后,string的后10位应该是乱码??而不是 '\0 '??
————————————————————————————————————
str[1]strcpy到string后,会连同str[1]中的 '\0 '一起strcpy到string里的。printf时到 '\0 '就结束了。。。