【原创】关于 scanf() 和 char * 之间的那点事儿

blogdaren 2020-08-25 抢沙发 93人次

问题背景:

int main()
{
    char *name;                                                                                                                                                        

    scanf("%s", name);
    printf("%s", name);

    return 0;
}
不出意外,上面的代码运行后会报告: 段错误

解决方案:

int main()
{
    char *name = (char*)malloc(sizeof(char));                                                                                                                          

    scanf("%s", name);
    printf("%s", name);
    free(name);

    return 0;
}

注意事项:

1、指针变量name使用前必须初始化,即必须提前分配内存空间;

2、scanf()函数的第2个参数要的是一个地址,这里name本身就是指针变量,所以直接写name就对,而坚决不能写成&name;

3、当printf()函数的第1个参数包含有%s格式说明符时,第2个参数需要为相应的char * 指针变量,原理即只要知道字符串数组的首个字符的地址,就能找到整个字符串。

版权声明:除非注明,本文由( blogdaren )原创,转载请保留文章出处。

本文链接:【原创】关于 scanf() 和 char * 之间的那点事儿

发表评论:

您的昵称:
电子邮件:
个人主页:

Free Web Hosting