c - 没有错误地打印使用 scanf 标准的单词
问题描述
我正在尝试打印一个简单的字符串,但我做不到。
#include <stdio.h>
int main(){
char *word;
scanf("%s", &word);
printf("%s\n", word);
return 0;
}
当我插入这个词时,我的代码会中断。
它只是停止程序执行,但没有给我任何错误。
我究竟做错了什么?
解决方案
问题1:你需要为你的单词分配空间。
问题 2:您的 scanf() 语法对于字符数组不正确。
问题 3:scanf("%s", ...) 本身容易受到缓冲区溢出的影响。
建议的替代方案:
#include <stdio.h>
#define MAXLEN 80
int main(){
char word[MAXLEN];
fgets(word, MAXLEN, stdin);
printf("%s", word);
return 0;
}
推荐阅读
- join - 在 asp.net 中使用 Linq 连接数据
- mysql - SQL:按多列汇总分组
- mysql - mysql问题,“else”在这个位置无效,期待:END
- android - 具有 Recyclerlayout 的固定大小动态网格
- tensorflow - Tensorboard 未正确显示标量
- javascript - 如何将 N 个项目分成 6 个随机组,以便总和始终相同?
- spring - Spring - 禁用路径扩展截断/内容协商
- php - 删除mysql数据,cron vs Mysql Event Scheduler
- java - 如何使用 Java 在 SFTP 服务器文件中附加数据
- swift - 查找矩阵中的下一个元素