strlen代码不起作用

时间:2014-05-13 21:29:17

标签: c strlen

处理这段代码,但出于某种原因,它会一直崩溃。

任何人都知道我做错了什么

char *str;
printf("Enter a string\n");
gets(str);
printf("The size of the string is %d", strlen(str));
system("PAUSE");    
return 0;

2 个答案:

答案 0 :(得分:3)

您尚未为str分配任何内存。声明缓冲区,例如char str[50],但请注意buffer overflows

答案 1 :(得分:1)

你只创建了一个char *指针,指向内存中的随机空间,你尝试用它做一些事情 - 这就是你的程序崩溃的原因。

你应该创建一个chars数组:

char str[50];

或使用malloc:

为字符串动态分配内存
char* str;
str = (char *)malloc(50*sizeof(char)); // allocate memory
// some operations
free(str);                      // deallocate memory

其中50是您估计的缓冲区大小。