我有以下C代码:
#include <stdio.h>
int main()
{
char* ptr;
printf("Enter the word: ");
gets(ptr);
printf("The input string is: ");
puts(ptr);
return 0;
}
它编译并请求输入,但在我输入输入后,它暂停并退出。不再执行或显示其他命令。我无法理解这个问题。请帮助。
#include <stdio.h>
int main()
{
char str[100] = "";
printf("Enter the word: ");
fgets(str, sizeof str, stdin);
printf("The input string is: ");
printf("%s", str);
return 0;
}
尝试使用fgets()
。gets()
的使用是危险的,因为gets()
本身是不安全的,因为它复制了所有来自STDIN的输入到缓冲区,不检查大小。这允许用户提供一个大于缓冲区大小的字符串,从而导致溢出条件。
puts
比printf
简单,但要注意前者会自动附加一个换行符。如果这不是您想要的,您可以将字符串fputs
设置为stdout或使用printf
。