使用gets()在指针中输入一个字符串

时间:2015-11-15 19:20:58

标签: c

#include <stdio.h>

void main()
{
    char *p;
    gets(p);
    puts(p);
}

当我运行代码时会发生这种情况 enter image description here

3 个答案:

答案 0 :(得分:2)

您必须声明该指针需要多少内存。 例如,当你输入这个时:* p =&#34; Hello world&#34;它会自动声明为此使用了多少内存。因此,如果您仍然想使用指针来执行此程序,那么您必须使用malloc函数:

#include<stdio.h>

int main()
{
    char* p;
    p=malloc(100);

    printf("Enter some text:");
    gets(p);
    printf("\nYou have typed: %s\n",p);

    return 0;
}

这里是malloc(100);意味着你需要100byte内存来存储该字符串。

答案 1 :(得分:1)

您似乎是从错误的来源学习,因为您发布的代码很久以前就被教过了,而且不再是。因为它有很多问题,它使用main()之前使用的int main(void) { char p[1024]; if (fgets(p, sizeof(p), stdin) == NULL) return -1; puts(p); return 0; } 函数的非标准形式。

此外,您正在尝试写入不指向任何位置的指针。

您的计划的好版本将是

<script src="../bower_components/webcomponentsjs/webcomponents.min.js"></script>

答案 2 :(得分:-3)

指针*p不提供存储空间。你需要提供一些实际上有记忆的东西。例如:

#include <stdio.h>

void main()
{
    char p[1024];
    gets(p);
    puts(p);
}

但请注意,如果您输入的字符数超过1024个,则会再次出现问题。