【问题标题】:How to take direct inputs in char pointers in C [duplicate]如何在C中的char指针中直接输入[重复]
【发布时间】:2020-08-27 05:46:19
【问题描述】:
#include<stdio.h>

int main()
{
    char *string1;
    scanf("%s",string1);
    printf("\n\nstring 1 is %s\n",string1);
} 

每当我运行这个程序时,它都会接受输入,然后停止工作。 如何在 C 中的 char 指针中直接输入?

【问题讨论】:

    标签: c string pointers char


    【解决方案1】:

    你没有为string1分配内存。

    您可以通过这种方式使用malloc() 函数:

     size_t string_size = 16;
     char *string1 = (char*)malloc(string_size * sizeof(char));
    

    这个,提供的字符串长度不能超过15个字符。

    【讨论】:

    • 所以这意味着我们在向 char 指针输入字符串时不能分配动态内存。 ?比如,在输入一些字符串之前,用户必须在运行时事先指定它的长度?
    • 在这种情况下,您已经声明了变量string1。在这种情况下,请输入string1 = (char*)malloc(string_size * sizeof(char));。并且不要忘记在结束前调用free(string1) 来释放分配的内存。
    • 我们可以动态分配足够长的内存缓冲区来存储字符串。或者我们可以在 char 数组中静态地执行此操作,正如 @paladin 建议的那样。
    【解决方案2】:

    你需要为你的字符串分配内存。

    #include<stdio.h>
    
    int main()
    {
        char string1[100];
        scanf("%s",string1);
        printf("\n\nstring 1 is %s\n",string1);
    }
    

    C 中的 PS 字符串只是字符数组,以 '\0' (null) 结尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      相关资源
      最近更新 更多