首页 > 解决方案 > 没有错误地打印使用 scanf 标准的单词

问题描述

我正在尝试打印一个简单的字符串,但我做不到。

#include <stdio.h>

int main(){
   char *word;
   scanf("%s", &word);
   printf("%s\n", word);
   return 0;
}
 

当我插入这个词时,我的代码会中断。

它只是停止程序执行,但没有给我任何错误。

我究竟做错了什么?

标签: c

解决方案


问题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;
}

推荐阅读