1。我遇到了细分错误。2.为什么会在这里发生?
#include <stdio.h>
#include<string.h>
int main()
{
char *str;
printf("enter a string :");
gets(str);
printf("string is %s\n",str);
return 0;
}
您将指针传递到函数(例如gets()
),该函数将数据写入指针所指向的存储位置。在您的情况下,您具有uninitialized指针,这意味着它指向随机内存位置(应用程序或操作系统所在的位置)。这会导致随机效应-从“工作”到异常终止或挂起。您需要保留内存并分配指向该内存的指针,例如创建人:
char *str = (char*)malloc(256);
gets(str);
puts(str);
free(str);
考虑使用更安全的gets_s()
。