安装了Eclipse和CB后,我遇到了几个无法正常启动的项目。我认为这是因为我使用的操作系统,这就是我切换到Ubuntu的原因。但是,我试图运行的某些程序仍无法正常运行。例如,来自clc-wiki的代码在按Enter键时不输出任何内容:
#include <stdio.h>
#define MAXLINE 40 /* maximum input line size */
int getlines(char line[], int maxline);
void copy(char to[], char from[]);
/* print longest input line */
int main()
{
int c;
int len; /* current line length */
int max; /* maximum length seen so far */
char line[MAXLINE]; /* current input line */
char longest[MAXLINE]; /* longest line saved here */
max = 0;
while ((len = getlines(line, MAXLINE)) > 0) {
if (line[len-1] != '\n')
while ((c = getchar()) != EOF && c != '\n')
++len;
if (len > max) {
max = len;
copy(longest, line);
}
}
if (max > 0) { /* there was a line */
printf("Longest line with %d characters:\n", max);
printf("%s ...\n", longest);
}
return 0;
}
/* getline: read a line s, return length */
int getlines(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;
}
/* copy: copy 'from' into 'to'; assume to is big enough */
void copy(char to[], char from[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0')
++i;
}
如果我们在XP中运行它,就会遇到类似的问题。然而,如果我们在ideone编译完全相同的代码,那么一切都很完美。
安装了gcc和g ++,以及Windows的mingw。
你能否告诉我这个问题到底是什么?
答案 0 :(得分:2)
此代码在按Enter键时不输出任何内容
这是您的代码的正确行为。它被设计为在按 Enter 时不打印任何内容。
特别是该代码需要文件结束指示。如果您的程序从文件中读取(与ideone上的情况一样),则文件结束指示会自动发生或多或少。如果您的程序从计算机键盘读取(当您以交互方式运行它时),则必须提供文件结束指示。
要练习您提供的代码:
在Linux上,从键盘输入几行不同长度的行,每行后跟 Enter 。然后在一行上输入 CONTROL - D 。
在Windows上,从键盘输入不同长度的多行,每行后跟 Enter 。然后在一行上输入 CONTROL - Z 。