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;
}
所以我需要编写一个程序,一次将其输入反转一行,这就是我基本上想到的:
#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;
}