gpt4 book ai didi

c - 如何用scanf()读取一句char指针?

转载 作者:行者123 更新时间:2023-11-30 20:18:13 26 4
gpt4 key购买 nike

我有一个 char 指针:char *sentences; 我这样读它:

#include <stdio.h>

int main() {
char *sentences;
sentences="We test coders. Give us a try?";
printf("%s", sentences);
return 0;
}

但是我想用c中的scanf()函数来阅读。

scanf("%[^\n]s",S);scanf("%s",S); 不起作用。

我怎样才能做到这一点?

最佳答案

您是否声明变量 char *sentences; 并立即尝试使用 scanf 写入它?这是行不通的。

除非 char * 指针指向现有字符串,或指向使用 malloc 系列函数分配的内存,请使用 scanf 分配给它> 或类似的未定义行为:

char *sentences;
scanf("%s", sentences); // sentences is a dangling pointer - UB

由于您尚未实际共享使用 scanf 且不起作用的代码,因此我只能假设这就是问题所在。

如果要将用户提供的值分配给字符串,您可以将其声明为固定长度的数组,然后使用合适的输入函数读取它。如果使用正确,scanf 将会工作,但 fgets 更简单:

char sentence[200];
fgets(sentence, 200, stdin);
// (User inputs "We test coders. Give us a try")

printf("%s", sentence);
// Output: We test coders. Give us a try.

此外,永远不要使用gets

关于c - 如何用scanf()读取一句char指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54622903/

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