gpt4 book ai didi

c - 在运行时使用用户输入初始化 char*

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:37 24 4
gpt4 key购买 nike

我知道这是可能的

char text[A_BIG_NUMBER];
printf("Enter your name");
scanf("%s",text);

但是有没有办法做到这一点? (不使用 char 数组作为备份)

char* text;
printf("Enter your name");
scanf("%s",text);

虽然第一种方法很简单,但如果 A_BIG_NUMBER 不够大,无法容纳用户输入的字符串,那么它会给其余代码带来问题,另一方面,如果我们使用大数字,则会浪费内存!

谢谢

编辑:抱歉标签错误。我只问 C。

最佳答案

既然你说的是C++,那么答案是“是的,字符串”:

std::string name;

std::cout << "Enter your name: ";

if (!std::getline(std::cin, name)) { /* unexpected end of input */ }

// now use "name"

如您所见,您通常需要动态分配来存储外部数据。 (您的代码不是很通用:您不能拥有非常大的自动数组,并且固定大小会添加任意魔数(Magic Number)和约束。)C++ 是封装动态分配细节的完美语言 < em>和清理,以便您可以使用简单的自动变量为您完成所有工作。

如果您不喜欢 iostream,您可以设置自己的重载 bool getline(std::FILE *, std::string &) 循环调用 std: :fgets+= 来提取完整​​的一行。

关于c - 在运行时使用用户输入初始化 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769052/

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