首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

,反转字符串,看看那位错了

2013-02-24 
求助,,,反转字符串,看看那位错了#includestdio.hchar reverse(char str[],int start,int end){char temp

求助,,,反转字符串,看看那位错了
#include<stdio.h>
char reverse(char str[],int start,int end)
{
char temp;
    printf("Original string is:\n%s\n",str);
    while(start<end)
{
temp=str[start];
str[start] =str[end];
start++;
str[end]=temp;
end--;
}
    printf("Reversed string is:\n%s\n",str);
return 0;
}

main()
{
char str[]={0};
int start,end;
scanf("%s",str);
scanf("%d%d",&start,&end);
reverse(str,start,end);
return 0;
}

[解决办法]
你要实现的功能是反转字符串,那么说我输入一个字符串就行了,你还要别人输入scanf("%d%d",&start,&end);,有点麻烦,
参考:


#include<stdio.h>

void reverse(char orig[])
{
int length = 0;
int i,j;   
char temp;

while(orig[length] != '\0')
length ++;

j = length - 1;
for(i = 0; i < length / 2; ++i,--j)
{
temp = orig[i];
orig[i] = orig[j];
orig[j] = temp;
}
}

void main()
{
char orig[20];

printf("Original string is:");
scanf("%s",orig);

reverse(orig);

printf("Reversed string is:%s\n",orig);
}

[解决办法]
main()
{
char str[]={0}; // 这里错了,你的数字只有一个字符的宽度,下面就出错了,是定义一个比end个字符还大的数组
int start,end;
scanf("%s",str);
scanf("%d%d",&start,&end);
reverse(str,start,end);
return 0;
}
[解决办法]
不定义字符长度,那你要用动态分配malloc(),
不过就你的这么写的程序,用malloc()麻烦,也没必要,因为你是先 scanf("%s",str);输入字符串,
后才输入 end 这个界定数,所以你也是必须先malloc一个制定大小的字符串,还不如直接定义一个足够长的数组

热点排行