繁体   English   中英

如何在C中的数组中输入字符?

[英]How to take character input in an array in C?

char name[2];
scanf("%c",name);
printf("%c",name);

我刚刚开始学习 C。我对上面的代码很好奇,我从 printf 输出中得到的与我输入的字符不同。而是输出一些看起来很有趣的符号。 有人可以向我解释一下吗?

对于%c说明符, scanf需要存储字符的位置的地址,但printf需要字符的值,而不是它的地址。 在 C 中,数组在被引用时衰减为指向数组第一个元素的指针。 所以, scanf被传递了name数组的第一个元素的地址,这是字符将被存储的位置; 但是, printf也被传递了地址,这是错误的。 printf应该是这样的:

printf("%c", name[0]);

请注意, scanf参数在技术上是可以的,当指向单个字符的指针就足够时,传递数组有点奇怪。 最好声明一个字符并显式传递其地址:

char c;
scanf("%c", &c);
printf("%c", c);

另一方面,如果您尝试读取字符串而不是单个字符,那么您应该使用%s而不是%c

读取单个字符

char name[2];
scanf("%c",name);
printf("%c",name[0]);

或者读取一个字符串

char name[2];
scanf("%1s",name);
printf("%s",name);

您需要 %s 因为 name 包含 2 个元素。 %c 用于单个字符,因此如果您希望用户输入某些内容,例如“as”(不带“”)并且程序将其打印出来,您需要 %s。

char name[2];

scanf(" %s", name);
printf("%s",name);

如果您提供的输入包含小于或等于 2 的字符,您将获得正确的输出,就像您的输入一样,如果您的输入包含大于 3 的字符,则它不起作用

暂无
暂无

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

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