char name[2];
scanf("%c",name);
printf("%c",name);
我刚开始学习C语言。我对上面的代码很好奇,从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);
由于名称包含2个元素,您需要使用%s。%c用于单个字符,因此如果您希望用户输入例如“as”(不带“”),并且程序将其打印出来,则需要使用%s。
char name[2];
scanf(" %s", name);
printf("%s",name);
scanf(" %s", name);
中的空格是不必要的。它会清除任何前导空格,但在使用%s
格式时,这也会自动发生。但在问题中使用%c
格式时,通常需要包含该空格,因为在这种情况下,除非包括该空格,否则不会清除空格。 - Weather Vane如果你输入的字符少于或等于两个,则会得到与输入相同的正确输出,但如果输入的字符数大于3,则无法正常工作。
printf("%c", name[0]);
这个例子。 - ad absurdum%c
返回指向什么的指针? - Ajay Brahmakshatriya