C 这个字符串反序存放错在哪

来源:百度知道 编辑:UC知道 时间:2024/05/28 05:19:43
#include <stdio.h>

char array(char str[80])
{
int i,n=0;
char str2[80];
n=strlen(str);
for(i=0;i<=n;i++) str2[n-i-1]=str[i];
str[n]='\0';
printf("%s",str2);
}

main()
{
char str1[80];
gets(str1);
array(str1[80]);
}

编译通过 运行就报错 VC6.0
for循环里改为n<=n/2
回答者:czq241 - 助理 二级 10-12 10:16

为什么要改n/2????

tdxhdsx:t=str[i];
str[i]=str2[n-i-1]; /*这是对调数组元素*/
str2[n-i-1]=t;

直接让STR2里面的元素等于STR1的元素不行吗 为什么要引入t

不好意思,刚才没看清代码,只改那个不行,修改如下:

#include <stdio.h>
#include<string.h>
char str[80];
void array()
{
int i,n=0;
char temp;

n=strlen(str);
for(i=0;i<=n/2-1;i++)/*将前半元素与后半元素对调*/

{temp=str[n-i-1];
str[n-i-1]=str[i];
str[i]=temp;

}

str[n]='\0';
printf("%s",str);
}

void main()
{
gets(str);
array();

}

函数定义错误,正确的函数如下
char array(char str[80])
{
int i,n,t;
char str2[80];
n=strlen(str);
for(i=0;i<=n/2-1;i++)
{
t=str[i];
str[i]=str2[n-i-1]; /*这是对调数组元素*/
str2[n-i-1]=t;
}
str2[n]='\0';
printf("%s",str2);
}