
先输入一个数表示要输入的字符串的个数,然后让换行输入的多个字符串存到数组中,当字符串的个数达到后按照首字母顺序换行输出
C语言的一个问题,我这程序为啥不对
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
qfl_sdu 2021-07-11 12:38关注char* str[N]没有申请空间,在scanf()前需要str[a] = (char*)malloc(N);
scanf("%s",str[a])
具体修改如下:
你自己根据上面该一下或者参考我写的。
代码修改如下:#include <stdio.h> #include <string.h> #include <stdlib.h> #define N 10000 int main() { int num; int i,j; char* str[N] = {0}; char tmp[N]; int a = 0; printf("Please enter a positive integer not less than 5.\n"); scanf("%d",&num); getchar(); //吸收回车符 //输入num个字符串 while(a < num) { str[a] = (char*)malloc(N); memset(str[a],0,N); scanf("%s",str[a]); a++; } //比较字符串 for (i=0;i<num-1;i++) { for (j=0;j<num-1-i;j++) { if(strcmp(str[j],str[j+1]) > 0) { memset(tmp,0,N); strcpy(tmp,str[j]); memset(str[j],0,N); strcpy(str[j],str[j+1]); memset(str[j+1],0,N); strcpy(str[j+1],tmp); } } } //打印 for (i=0;i<num;i++) printf("%s",str[i]); //释放空间 for (i=0;i<num;i++) free(str[i]); return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报