C语言中 字符串问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 03:44:33
#include <stdio.h>
#include <string.h>

#define N 20

main()
{

char str[N][N+1];
int i;
char **small,**larger;
printf ("Enter word :");
*small = *larger = gets(str[0]);

for (i = 1;i < N;i++){
printf ("Enter word :");
gets(str[i]);
if (strlen(str[i]) == 4)
break;
if (strcmp(str[0],str[i]) > 0)
*small = str[i];
else
*larger = str[i];
}

printf ("Smallest word : %s\n",*small);
printf ("Largest word :%s\n",*larger);

return 0;
}

可以运行但是当输入第一个字符串的时候就出错了。。

#include <stdio.h>
#include <string.h>
#include <conio.h>
#define N 20

main()
{

char str[N][N+1];
int i;
char *temp = str[0];
char **small = &temp , **larger = &temp;
/*二级指针必须先确定指向一维数组的地址,否则分配的内存不确定,所以运行时会出现访问不正常。*/
printf ("Enter word :");

*small = *larger = gets(str[0]);
for (i = 1;i < N;i++){
printf ("Enter word :");
fflush(stdin);/*清除输入流*/
gets(str[i]);
if (strlen(str[i]) == 4)
break;
if (strcmp(str[0],str[i]) > 0)
*small = str[i];
else
*larger = str[i];
}

printf ("Smallest word : %s\n",*small);
printf ("Largest word :%s\n",*larger);

getch();
return 0;
}

/*注:不知道你程序实现的功能,所以其它地方不好修改。*/

scanf判断输入结束标志是空格和回车所以想输出带有空格字符数组可将程序修改如下 #include "stdio.h" void main() { char c[13]; gets(c[13]); puts(c[13])