gpt4 book ai didi

c - 字符 * 和字符 [ ] 的 scanf 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 20:23:39 26 4
gpt4 key购买 nike

我是 C 编程的新手。我正在尝试使用 scanf 输入两个字符串.我的第一次尝试如下

#include <stdio.h>
int main(void)
{
char *word1;
char *word2;
scanf("%s", word1);
scanf("%s", word2);
printf("%s\n", word1);
printf("%s\n", word2);
}
如果我运行此代码,则仅正确存储第一个输入( word2 为空)。但是,如果我运行下面的代码,两个输入都正确存储在 word1 中。和 word2 .
#include <stdio.h>
int main(void)
{
char word1[10];
char word2[10];
scanf("%9s", word1);
scanf("%9s", word2);
printf("%s\n", word1);
printf("%s\n", word2);
}
将指针与 scanf 一起使用有什么问题? ?

最佳答案

使用指针作为您的 scanf 没有问题。原则上论证。在您的特定情况下,您只是没有初始化这些指针,因此导致了未定义的行为。修改您的第二个(正确)示例以使用指针:

#include <stdio.h>
int main(void)
{
char word1[10];
char *p1 = word1;
char word2[10];
char *p2 = word2;
scanf("%9s", p1);
scanf("%9s", p2);
printf("%s\n", p1);
printf("%s\n", p2);
}
关于指针要记住的重要一点是,它们必须指向某些东西才能有用。

关于c - 字符 * 和字符 [ ] 的 scanf 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65878284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com