风中凉意 发表于 2020-12-3 11:21:26

C语言学校OJ题字符串反序,提交后运行错误

题目描述
写一个函数,使输入的一个字符串(少于80个字符)按反序存放,在主函数中输入输出字符串。

样例输入
reverse a string
样例输出
gnirts a esrever
以下是我的代码:
#include <stdio.h>
#include <string.h>
int main(){
    char x;
    int i;
    for(i=0;(x=getchar())!='\n';i++);
    x='\0';
    for(i=i-1;i>=0;i--)printf("%c",x);
    return 0;
}
学校OJ系统运行于Debian/Ubuntu Linux. 使用GNU GCC/G++ 作为C/C++编译器,编译器版本为gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)

巴巴鲁 发表于 2020-12-3 11:29:13

反序存放,不是反序输出

风中凉意 发表于 2020-12-3 11:31:24

巴巴鲁 发表于 2020-12-3 11:29
反序存放,不是反序输出

学校OJ是根据输入和输出判断的,而且问题是出在运行错误,应该不是这个问题

风过无痕1989 发表于 2020-12-3 11:59:43

本帖最后由 风过无痕1989 于 2020-12-3 12:04 编辑

#include <stdio.h>
#include <string.h>
int main() {
        char ch, x;
        int i, n;
        for (i = 0;(x = getchar()) != '\n';i++);
/*   x = '\0';      */                              // 此行语句没有用处,可删除
        n= i - 1;
        for (i = n;i >= n / 2;i--)
        {
                ch = x;
          x = x;
          x = ch;
    }

        for (i = 0;i <= n;i++)
                printf("%c", x);
        printf("\n");
        return 0;
}

风中凉意 发表于 2020-12-3 13:17:51

问题本人已解决,将'\n'换成EOF即可,估计是因为学校的测试数据里没有换行符导致数组溢出
页: [1]
查看完整版本: C语言学校OJ题字符串反序,提交后运行错误