繁体   English   中英

C语言getchar()和putchar()

[英]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同时增加i1

for(i=0; i<len; ++i)
{
    putchar(name[i]);
}


您可能需要进行一些错误检查,以确保getchar()正常工作。 错误时将返回EOF
并且name应该足够大以容纳输入字符串。

getchar()putchar()仅处理单个字符。

getchar()-

是输入功能。 它用于一次从控制台输入(通常是键盘)读取一个字符。
例如:

char c=getchar();

putchar()-

是输出函数。 它用于一次在控制台输出(通常是监视器)上显示一个字符。 它接受一个字符类型的参数。
例如:

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个字母甚至一百万个字母的名称会发生​​什么;应该如何处理;“错误”的输入(例如数字或标点符号呢?),想一想计算机内部真正的名字是什么)

由于只需要使用getcharputchar ,因此需要仔细阅读它们的规范。 请注意,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.

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