c - 如何使用C从键盘读取字符串?

标签 c string scanf

我想读取用户输入的字符串。我不知道字符串的长度。由于 C 中没有字符串,我声明了一个指针:

char * word;

并使用 scanf 从键盘读取输入:

scanf("%s" , word) ;

但我遇到了段错误。

当长度未知时,如何从 C 中的键盘读取输入?

最佳答案

您没有为 word 分配存储空间 - 它只是一个 dangling pointer .

改变:

char * word;

到:

char word[256];

请注意,此处 256 是一个任意选择 - 此缓冲区的大小需要大于您可能遇到的最大可能字符串。

另请注意 fgets是比 scanf 更好(更安全)的选择用于读取任意长度的字符串,因为它需要一个 size 参数,这反过来有助于防止缓冲区溢出:

 fgets(word, sizeof(word), stdin);

关于c - 如何使用C从键盘读取字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7709452/

相关文章:

c - 在 Linux 中使用 C 在后台启动一个进程

c - 为什么 realloc 不缩小数组?

c - 使用 strtol 验证 ANSI C 中的整数输入

c# - 如何在 ObjectDataSource 方法中将参数默认值设置为空字符串?

c - 简单的 C 程序在变量应该 scanf 后一致地将变量打印为 6356748

c - 为什么我们在 C 编程中总是必须使用 fgetc 命令而不是 fscanf,它做同样的事情但打印奇怪的结果?

c - 从文件读入字符数组

c - 文本区域的大小

c - 用 C 打印文件中的所有重复单词

php - 关于strpos : how to get 2nd occurrence of a string?的问题