C 字符数组和指针字符数组
我对这个输出有一些问题。另外,我还想要一些关于如何使用C 字符数组和指针字符数组,c,C,我对这个输出有一些问题。另外,我还想要一些关于如何使用char*str的示例 int main() { char str[5]; scanf_s("%c", &str); printf("%s", str); return 0; } 输入“VI”的输出结果很奇怪。首先,您需要一个指针作为scanf_s的参数,这正是str传递到函数时衰减的结果,因此您不需要&运算符,还需要指定缓冲区大小: scanf_s("%c", str, 5); 您可以找到Micr
char*str
的示例
int main() {
char str[5];
scanf_s("%c", &str);
printf("%s", str);
return 0;
}
输入“VI”的输出结果很奇怪。首先,您需要一个指针作为
scanf_s
的参数,这正是str
传递到函数时衰减的结果,因此您不需要&
运算符,还需要指定缓冲区大小:
scanf_s("%c", str, 5);
您可以找到Microsoft文档。
scanf\u s
将指针作为其参数。因此,您不需要使用&str
,因为str
在参数表达式等表达式中使用时会隐式转换为指针。您还可以在scanf\u s
中将缓冲区大小作为参数传递
所以你可以用
scanf_s("%c", str, 5);
其中5是缓冲区大小。传递特定的缓冲区大小将限制您接受的输入超过缺少的大小
scanf
。在scanf
中,您可能需要比数组或字符串大小更多的输入(例如声明的字符串是char str[4]
,但您可能需要输入'Hello'
),这会导致程序因溢出而崩溃。但是在scanf_f中使用特定的缓冲区大小将不允许您接受比缓冲区大小更多的输入。这就是scanf_s的用武之地。scanf_s
将指针作为输入,就像printf
一样。您不需要执行&
您可以给出输入和输出的示例吗?您不需要终止字符串。您可以比“此输出有问题”和“输出结果怪异”更具体一些吗?(通过编辑您的问题来回答,而不是在评论中(视情况而定))。这是我得到的输出。即使我改为scanf_s(“%c”,str),也请参见,and.imgur.com/yRB0I0r这是我得到的输出。即使我改为scanf_s(“%c”,str)