Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“之间的差异%";及「%s";在C中_C - Fatal编程技术网

“之间的差异%";及「%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
机器生活在独角兽世界附近。