Printf 在 Ubuntu 中不工作

Printf Not Working in Ubuntu

所以我需要编写一个程序,一次将其输入反转一行,这就是我基本上想到的:

#include <stdio.h>
#include <string.h>

#define MAXLINE 1000

int getLine(char s[], int lim)
{
        int c, i;
        for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
                s[i] = c;
        if (c == '\n') {
                s[i] = c;
                ++i;
        }
        s[i] = '[=11=]';
        return i;
}

int reverse(char line[], char reverse[])
{
        int i, j;
        for (i = 0, j = strlen(line); i < strlen(line); i++, j--) {
                reverse[i] = line[j];
        }
        return 0;
}

int main()
{
        int len;
        char line[MAXLINE];
        char rev[MAXLINE];
        while (len = getLine(line, MAXLINE) > 0) {
                reverse(line, rev);
                printf("%s\n", rev);
        }
        return 0;
}

据我所知,它很好,应该可以正常工作,但是当我 运行 它打印时,即使下一行被打印出来,那里也没有反转的字符串! 同样的问题在其他程序中也存在,我需要打印一个字符串,我不确定我是否应该在 askubuntu 论坛或这里提问,所以我先在这里试了一下!

在反向函数中,您错过了复制 '[=11=]' 字符。这可能导致 printf 不打印字符串。请记住 strlen 给出的长度没有 '[=11=]'.

修改后的反向函数应该是这样的:

int reverse(char line[], char reverse[])
{
        int i, j;
        for (i = 0, j = (strlen(line)-1); i < strlen(line); i++, j--) {
                reverse[i] = line[j];
        }
        reverse[i] = '[=10=]'
        return 0;
}