繁体   English   中英

使用getchar()和putchar()的非常简单的C问题

[英]Very simple C question using getchar() and putchar()

您好,我正在自学C,并且正在阅读K&R书,但遇到了一些麻烦(我正在运行OS X)。 这来自第1.5.1节“文件复制”,应该以字符作为输入,然后输出该字符。 这是代码:

#include <stdio.h>

/* --  Copy input to output -- */ 
int main(void)
{
int c;

c = getchar();

while ( c != EOF ) {
    putchar(c);
    c = getchar;
}


}

因此,我认为我的问题不在于代码本身,而在于编译和运行。 首先,在编译时出现以下错误

/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c: In function ‘main’:
/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c:12: warning: assignment makes integer from pointer without a        cast
/Volumes/Goliath/Dropbox/C programs/prog1_5_1.c:16: warning: control reaches end of non-void function

然后,当我运行输出文件(在终端中)时,它的空间很小,然后当我输入字母时,说我输入了

一种

然后我打回车

然后我换了一条新线。 如果我再按一个新键,屏幕就会开始发疯,到处都是问号。

我不确定我是否很有道理,但我发现这是一个奇怪的问题。 提前非常感谢你

第二个赋值应该是c = getchar(); 通过省略括号,可以将getchar函数的地址分配给c ,这不是您想要的。

另外,在main的末尾,您需要return 0;的行return 0; 或类似的名称,以消除“控制到达非void功能结束”的警告。

您错过了第12行的getchar()(),但没有括号,“ getchar”的值等于该函数的地址,这就是为什么收到指针强制转换为int的警告的原因

您在第二个getchar之后缺少括号。

这意味着您要将方法在内存中的位置分配给变量c ,这将导致无限循环,因为它永远不会等于EOF

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM