“之间的差异%";及「%s";在C中
我有以下代码:“之间的差异%";及「%s";在C中,c,C,我有以下代码: #include <stdio.h> int main() { char str[100]; int k; scanf("%s", str); scanf("%d", &k); printf("%c", str[k - 1]); return 0; } #包括 int main(){ char-str[100]; int k;
#include <stdio.h>
int main() {
char str[100];
int k;
scanf("%s", str);
scanf("%d", &k);
printf("%c", str[k - 1]);
return 0;
}
#包括
int main(){
char-str[100];
int k;
scanf(“%s”,str);
scanf(“%d”和“&k”);
printf(“%c”,str[k-1]);
返回0;
}
为什么在命令
printf
中我们必须使用%c
而不是%s
?我尝试替换%c
=%s
,但没有结果。在printf
格式字符串中,%c
需要一个表示单个字符的int
str[k-1]
是一个char
,当传递给变量函数(如printf
)时,它被提升为int
%s
需要一个指向C字符串的非空char
指针
请注意,您可以使用以下选项打印单个非零字符:
printf("%.1s", &str[k - 1]);
后面的精度字段指定了要输出的最大字符数,&str[k-1]
是指向字符串k
-th字符的指针str
您读了吗?对不起,我是新手:((使用了什么输入?每个人一开始都是新手,所以没问题。但是作为一个新手,当你不理解某些东西时,阅读文档就更重要了。@chux:说得好,答案被修改了。我正期待着一场语言律师关于char
被提升为unsigned int
的争论CHAR\u MAX>INT\u MAX
(无符号的CHAR
类型和sizeof(INT)==1
)的体系结构。CHAR\u MAX>INT\u MAX
机器生活在独角兽世界附近。