#include
#include
int main()
{
char str[][4]={"\0"};
char string[30],temp;
int i=0,j,n,k,m,p=0;
int l=0;
scanf("%d",&n);
p=n-1;
for(k=0;k {
scanf("%s",&str[k]);
l=strlen(str[k]);
for(m=0;m for(i=0;i for(j=i;j {
if(str[m][i]>str[m][j])
{
temp=str[m][i];
str[m][i]=str[m][j];
str[m][j]=temp;
}
}
}
for(i=0;i {
for(j=0;j {
printf("%c ",str[i][j]);
}
printf("%c",str[i][l-1]);
if(p>i)
{
printf("\n");//这个换行的问题解决了.之后是最后的空间问题
}
}
return 0;
}
for循环全部乱了,楼主截个图,或者把代码放在代码标识里
你再看下
把代码放到http://paste.ubuntu.com/,然后链接给我看看,直接看错误很累的,最好能自己跑一跑程帮你看
没改代码前我运行楼主的代码,报错:
stack around the variable 'str' was corrupted
明显是数组越界操作了
感觉有两个问题:
1.申请内存方式不对,应该动态申请
2.里面多了一层循环
#include <stdio.h>
#include<string.h>
void main()
{
//char str[][4]={"\0"};应该动态申请内存,这样相当于就是char str[1][4] = {"\0"}
char string[30],temp;
int i=0,j,n,k,m,p=0;
int l=0;
scanf("%d",&n);
char **str;
str = (char **)malloc(n*sizeof(char *));
p=n-1;
for(k=0;k<n;k++)
{
str[k] = (char *)malloc(4 * sizeof(char));
scanf("%s",str[k]);
l=strlen(str[k]);
//for(m=0;m<n;m++)这个地方逻辑有问题,是一句句输入的
for(i=0;i<l-1;i++)
for(j=i;j<l;j++)
{
if(str[k][i]>str[k][j])
{
temp=str[k][i];
str[k][i]=str[k][j];
str[k][j]=temp;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<l-1;j++)
{
printf("%c ",str[i][j]);
}
printf("%c",str[i][l-1]);
if(p>=i)
{
printf("\n");//这个换行的问题解决了.之后是最后的空间问题
}
}
}
注:如果还是不能AC,楼主就改成输入一句输出一句试试