[英]C language getchar() and putchar()
我是一名新的C语言学习者,下面有一个问题,我尝试将姓名打印出来,但没有打印出来。 这是我尝试的:
#include <stdio.h>
#include <ctype.h>
int main()
{
char name;
int len = 0;
printf("Enter the user name: ");
name = getchar();
while (name != '\n')
{
len++;
name = getchar();
}
printf("char = %d\n", len);
printf("name = ");
putchar(name);
return (0);
}
输出:
Enter the user name: abcd
len = 4
name =
它应该打印出name = abcd
。
我对此表示感谢,谢谢!
character at a time. getchar()
和putchar()
只可以处理在一个时间的字符。 由于需要存储基本上是字符序列的字符串,因此需要将name
声明为字符数组。
您不能使用putchar()
打印字符串。 尝试puts()
或printf()
。
并在遇到“ \\ n”时添加一个\\0
字符来表示字符串的结尾,此时您将停止阅读。
char name[20];
int len = 0;
printf("Enter the user name: ");
name[len] = getchar();
while (name[len] != '\n')
{
name[++len] = getchar();
}
name[++len]='\0';
如果必须使用putchar()
来打印字符串,则该字符串的长度为len
。 使具有可变的循环i=0
,并保持迭代只要i<len
同时增加i
由1
for(i=0; i<len; ++i)
{
putchar(name[i]);
}
您可能需要进行一些错误检查,以确保getchar()
正常工作。 错误时将返回EOF
。
并且name
应该足够大以容纳输入字符串。
getchar()
和putchar()
仅处理单个字符。
是输入功能。 它用于一次从控制台输入(通常是键盘)读取一个字符。
例如:
char c=getchar();
是输出函数。 它用于一次在控制台输出(通常是监视器)上显示一个字符。 它接受一个字符类型的参数。
例如:
char c;
putchar(c);
您应该使用gets()
和puts()
处理字符串,或者可以使用printf()
和scanf()
首先了解C语言中数组的概念。
如下使用scanf()
和printf()
:
#include <stdio.h>
int main(){
char name[20];
printf("Enter the name: ");
scanf("%s", name);
printf("Name: %s", name);
return 0;
}
这是使用getchar()和putchar()进行输入和打印的方式。
#include <stdio.h>
int main(void)
{
int name;
printf("Enter the user name: ");
while ((name = getchar()) != EOF)
putchar(name);
return 0;
}
我希望这有帮助。 :)
您可能需要了解有关编程和数据结构的更多信息。 我会推荐SICP ,这是一篇非常优秀的和免费的编程入门(与C 无关 )。
您需要学习C的更多知识。特别是关于数组 (但是它们有局限性,我让您找出哪些数组 ),也许是struct
,指针, C动态内存分配 。 这将花费您几个星期的时间,并且您需要阅读几本书(以及此处的一些参考资料,也许还可以浏览C11的规范,即n1570 )。
(问自己,如果程序用户输入50个字母甚至一百万个字母的名称会发生什么;应该如何处理;“错误”的输入(例如数字或标点符号呢?),想一想计算机内部真正的名字是什么)
由于只需要使用getchar和putchar ,因此需要仔细阅读它们的规范。 请注意,stdio通常会缓冲 。 也许您需要使用fflush 。
然后,您可以将名称读入某种数据结构中(我留给您查找哪些名称),并且可以一次使用getchar
读取一个字符来填充该数据结构。 同样,您可以使用putchar
一次输出该数据结构一个字符。
当然,您将使用一些控制流原语(可能是某种循环)。
我们不会做你的作业。
不要忘记在编译器中启用所有警告和调试信息(例如,如果使用GCC ...,则使用gcc -Wall -Wextra -g
进行编译 )。 阅读有关您的编译器的文档(例如,查看“ 调用GCC”一章)。 当然,学习如何使用调试器( gdb
,请参阅使用GDB进行调试 )。
您是开始学习C编程的人。 坚持不懈,这需要一些时间(数周或数月的工作)。 阅读几本书,研究C中现有软件的源代码(例如github上的免费软件 )。
PS。 对于使用C语言的专家来说,做功课是微不足道的。 但是,您应该自己学习-作业的目的是教给您一些知识-如果您从其他地方复制解决方案,您将不会学到任何东西
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.