我的代码中出现分段错误,我不知道为什么会收到此错误

问题描述 投票:0回答:1

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;
}
c string
1个回答
1
投票

您将指针传递到函数(例如gets()),该函数将数据写入指针所指向的存储位置。在您的情况下,您具有uninitialized指针,这意味着它指向随机内存位置(应用程序或操作系统所在的位置)。这会导致随机效应-从“工作”到异常终止或挂起。您需要保留内存并分配指向该内存的指针,例如创建人:

char *str = (char*)malloc(256);

gets(str);
puts(str);

free(str);

考虑使用更安全的gets_s()

© www.soinside.com 2019 - 2024. All rights reserved.