Danmoits @ 2021-01-16 11:06:01
#include <stdio.h>
int Strlen(char str[]);
void StrReverse(char str[]);
char str[5];
void main(){
fgets(str,5,stdin);
StrReverse(str);
int length=Strlen(str);
str[length]='\0';
//去除最后的换行符
printf("%s",str);
}
int Strlen(char str[]){
int i=0;
while(str[i]!='\n')
i++;
return i;
}
void StrReverse(char str[]){
int length=Strlen(str);
char *p=str;
char *q=str+length-1;
char t;
int i;
for(i=0;i<length/2;i++){
t=*p;
*p=*q;
*q=t;
p++;
q--;
}
}
用C语言
by Yukinoshita_Yukino @ 2021-01-16 11:07:24
char str[5];
数组爆了
by _caiji_ @ 2021-01-16 11:08:01
str只开了5位,放不下最后的\0,开大一点吧
by Oildum @ 2021-01-16 11:45:10
改成char str[100000](雾)
by Danmoits @ 2021-01-16 11:48:34
#include <stdio.h>
int Strlen(char str[]);
void StrReverse(char str[]);
char str[1024];
//扩大了数组容量
void main(){
fgets(str,1024,stdin);
StrReverse(str);
int length=Strlen(str);
str[length]='\0';
//去除最后的换行符
printf("%s",str);
}
int Strlen(char str[]){
int i=0;
while(str[i]!='\0')
//对回车稍作修改
i++;
return i;
}
void StrReverse(char str[]){
int length=Strlen(str);
char *p=str;
char *q=str+length-1;
char t;
int i;
for(i=0;i<length/2;i++){
t=*p;
*p=*q;
*q=t;
p++;
q--;
}
}
修改成了这样子 然后IDE界面是这样的,有结果但是显示“运行时错误”
by 传奇666666 @ 2021-01-16 11:56:51
你main函数没有返回0,所以自然会判断你re了。
by OraclePi @ 2021-01-16 12:14:46
add:
return 0;
by HYdroKomide @ 2021-01-16 12:16:14
最好还是写int main或者signed main
by PhantomEcho @ 2021-01-16 21:36:52
洛谷不支持void main这样的写法,建议改成int main,后面加上return 0