#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个字符的小输入时(例如,“
我的编译器(代码块)或我的pc (Windows7)有问题吗?或者它以某种方式与C的输入缓冲区有关?
发布于 2013-02-05 20:23:17
字符指针未初始化,应动态分配内存,
char *s = malloc(sizeof(char) * N);
其中N是您可以读取的最大字符串大小,如果不指定输入字符串的最大长度,则使用scanf
是不安全的,请这样使用它:
scanf("%Ns",s);
其中N与malloc相同。
发布于 2013-02-05 20:23:34
您没有为字符数组分配任何内存,因此首先尝试通过调用malloc()或calloc()来获取内存。然后试着使用它。
s = malloc(sizeof(char) * YOUR_ARRAY_SIZE);
...do your work...
free(s);
发布于 2013-02-05 20:24:37
您需要为指针将指向的缓冲区分配足够的内存:
s = malloc(sizeof(char) * BUF_LEN);
如果您不再需要此内存,请释放它:
free(s);
https://stackoverflow.com/questions/14707427
复制相似问题