#include <stdio.h>
#include <string.h>
#define H 3
#define P 20
#define M 20
int main() {
char a[H][P], b[M];
int i, j;
printf("输入字符串:\n");
gets(a);
for (i = 0; i < H; i++) {
gets(a[i]);
if (strcmp(a[i], b) > 0)
strcpy(b, a[i]);
else
strcpy(b, b);
}
printf("最大字符串为:%s\n", b);
}
gets(a);删掉
strcpy(b, b);是要干啥
另外定义b[M]是要初始化为空 。char b[M] = {0};
#include <stdio.h>
#include <string.h>
#define H 3
#define P 20
#define M 20
int main() {
char a[H][P], b[M];
int i, j;
printf("输入字符串:\n");
for (i = 0; i < H; i++) {
gets(a[i]);
if (strcmp(a[i], b) > 0)
strcpy(b, a[i]);
else
strcpy(b, b);
}
printf("最大字符串为:%s\n", b);
}
这个应该是越界,你代码的目的是什么呢
因为你没给初始化。b的乱码的值一直都比a[i]要大,所以一直没有值赋给b
不管是a还是b,你都应该先把它们的值先填充满0。