我是一名新的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
。
我很感激,谢谢!
答案 0 :(得分:3)
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
应该足够大以容纳输入字符串。
答案 1 :(得分:2)
getchar()
和putchar()
仅处理单个字符。
是输入功能。它用于从控制台输入(通常是键盘)一次读取一个字符。
例如:
char c=getchar();
是输出功能。它用于一次在控制台输出(通常是监视器)上显示一个字符。它接受一个字符类型的参数。
例如:
char c;
putchar(c);
您应该使用gets()
和puts()
来处理字符串,或者使用printf()
和scanf()
答案 2 :(得分:0)
首先了解C中的数组概念。
使用scanf()
和printf()
,如下所示:
#include <stdio.h>
int main(){
char name[20];
printf("Enter the name: ");
scanf("%s", name);
printf("Name: %s", name);
return 0;
}
答案 3 :(得分:-1)
这是使用getchar()和putchar()进行输入和打印的方法。
#include <stdio.h>
int main(void)
{
int name;
printf("Enter the user name: ");
while ((name = getchar()) != EOF)
putchar(name);
return 0;
}
我希望这会有所帮助。 :)
答案 4 :(得分:-1)
您可能需要了解有关编程和data structures的更多信息。我会推荐SICP,这是一本优秀且免费提供的编程介绍(不关于C)。
你需要了解更多C.特别关于arrays(但他们有局限性,我让你找出哪些),也许是struct
,指针,C dynamic memory allocation。这应该花费你几个星期,你需要阅读几本书(以及一些参考资料,如here,也许还要看一下C11的规范,即n1570)。
(问问自己,如果你的程序用户输入了50个字母,甚至一百万个字母的名称,会发生什么或应该发生什么;以及&#34;错误&#34;输入,例如数字或标点符号?想想计算机里面的名字是什么?
由于您只需要使用getchar和putchar,因此您需要仔细阅读其规范。请注意,stdio通常是buffering。也许您需要使用fflush。
然后你可以在一些数据结构中读取一个名称(我让你找出哪些),你可以使用getchar
一次读取一个字符来填充该数据结构。同样,您可以使用putchar
一次一个字符输出该数据结构。
当然,您将使用一些control flow原语(可能是某种循环)。
我们不会做你的功课。
不要忘记在编译器中启用所有警告和调试信息(例如,如果使用GCC ....,则使用gcc -Wall -Wextra -g
进行编译。阅读有关编译器的文档(例如,查看Invoking GCC章节)。当然,了解如何使用调试器(gdb
,请参阅Debugging with GDB)
你是开始学习C编程的人。坚持不懈,需要一些时间(数周或数月的工作)。阅读一些书籍,查看C语言中现有软件的源代码(例如free software上的github)。
PS。对于C语言的专家来说,做好功课是微不足道的;但是你应该自己学习 - 作业的目的是教你一些东西 - 如果你从其他地方复制一个解决方案你就不会学到任何东西