在char指针中输入字符串

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(){
    char *s;
    printf("enter the string : ");
    scanf("%s", s);
    printf("you entered %s\n", s);
    return 0;
}

当我提供长度不超过17个字符的小输入时(例如“aaaaaaaaaaaaaaa”),程序工作得非常好,但是在提供更大长度的输入时,它会给我一个运行时错误,说“main.c已经意外停止工作”。

我的编译器(代码块)或我的电脑(Windows 7)有问题吗?或者它是否与C的输入缓冲区有关?

提问于
用户回答回答于

问题在于您的代码..您永远不会为您分配内存char *。因为,没有分配(malloc()大)足以容纳字符串的内存,这成为一种未定义的行为。

你必须分配内存s,然后使用scanf()(我更喜欢fgets()

用户回答回答于

您没有为字符数组分配任何内存,因此首先尝试通过调用malloc()或calloc()来获取内存。然后尝试使用它。

s = malloc(sizeof(char) * YOUR_ARRAY_SIZE);
...do your work...
free(s);

扫码关注云+社区

领取腾讯云代金券