在Linux下编写C语言怎么使用不了getchar()和putchar()函数?完整回答正确的给5分

可以运行,但是没有效果。运行时,当输入字符串完成后按回车就是换行的效果,原来输入的字符串没有被输出,按Ctrl + Z反而变成撤销效果,按Ctrl + D也没效果,在Linux下使用的是QT_SDK环境。

第1个回答  2011-07-04
不会吧,stdio.h包含了吧,还有确认能找到C库追问

可以运行,但是没有效果

第2个回答  2011-07-05
在Linux下面是完全可以的,下面是整个编译和运行过程:
/* getchar.c */
#include <stdio.h>

int main(void)
{
char c = getchar();
putchar(c);

return 0;
}
编译:
$ gcc -o getchar getchar.c
运行:
$ ./getchar
a
a

另外,如果你想输入EOF不要按Ctrl+Z, 而应该按Ctrl+D。在Linux下面,Ctrl+Z是让进程进入后台执行,跟windows上不一样。

希望对你有帮助,如有问题,欢迎交流:)追问

没错的代码,按Ctrl + D也没效果

追答

你为啥要按Ctrl + D呢?你按Ctrl + D相当于什么都没有输入啊,当然没有效果啦!
你要按a,然后按回车

getchar()仅仅是取得一个字符,如果你要输入一个字符串,并让他获取之后输入,应该用
gets()和puts()这两个函数!不应该用getchar()和putchar()
不要说在Linux,在Windows你用getchar()然后就想获取字符串也是不行的

追问

我写的代码是:
#include
int main()
{
int c = 0;

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

return 0;
}
在Linux下没有任何效果,而在Windows下输入一行字符串并按回车后,程序就自动会把你所输入的字符串重新输出出来。这是怎么回事呢?

追答

你的代码没有问题,在我这里运行正常:

$ cat test.c
#include

int main(void)
{
int c = 0;
while ((c = getchar()) != EOF)
putchar(c);
return 0;
}
$ gcc -o test test.c
$ ./test
hello
hello
说明:上面输入了hello然后按回车,下面也会出现hello,然后按下Ctrl+D就结束了,说明读到了EOF
你的Linux怎么会没有效果呢?你是什么发行版?哪个版本的Linux ?
用gcc -Wall -o test test.c 编译 有什么提示输出吗?

追问

我的是Ubuntu11.04 64bit版的,我用的不是GCC开发工具,我用的是QT_SDK开发工具

第3个回答  2011-07-05
char * msg;
msg="1234567890";
这样定义就相当于msg指针指向的是一个const变量,也就是说msg = “1234567890”所在的内存区域是不可写的。所以msg[5] = 'A'没有写内存的权限,所以就会报错。char *msg = "1234567890"这样定义编译器编译的时候就会把msg当做是const变量放在不可写的内存区域。

#include <stdlib.h>
#include <string.h>
int main(void) {
int res;
char * msg;
char msg1[] ="1234567890";
msg = msg1;
printf("111msg[5]:%s\n", &msg[5]);
msg[5]='A';
printf("222msg[5]:%s\n", &msg[5]);
return 0;
}
另外,团IDC网上有许多产品团购,便宜有口碑追问

你在胡说什么?关指针什么事?

第4个回答  2011-07-04
和环境没有关系,你调用的是否正确?给的参数要检查好啊.
相似回答