所以我需要编写一个程序,一次将其输入反转一行,这就是我基本上想到的:
#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] = '\0';
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
论坛或这里提问,所以我先在这里试了一下!
最佳答案
在反向函数中,您错过了复制 '\0'
字符。这可能导致 printf 不打印字符串。请记住,strlen 给出的长度没有 '\0'
。
修改后的Reverse函数应该是这样的:
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] = '\0'
return 0;
}
关于c - Printf 在 Ubuntu 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40737202/