2014-05-13 116 views
0

在这段代码上工作,但由于某些原因,它一直在崩溃。strlen代码不能正常工作

任何人有一个想法,我做错了什么

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

@Lafexlos从标题中删除标签是一个有用的编辑,我认为它太小 – yizzlez

回答

3

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

+0

谢谢你解决了这个问题。 – danielrieske

+1

@ user3206159既然这个答案对你有帮助,你可以通过点击旁边的小复选标记来接受它。这会给你和mdsl一些声望点,并将你的问题标记为已解决。这不是必需的,但强烈建议。 – computerfreaker

1

您只创建了一个char *指针,指向内存中的随机空间,并且您尝试使用它来执行某些操作 - 这就是您的程序崩溃的原因。

应创建字符数组:

char str[50]; 

或动态地进行字符串使用malloc分配内存:

char* str; 
str = (char *)malloc(50*sizeof(char)); // allocate memory 
// some operations 
free(str);      // deallocate memory 

其中50是您的预计缓冲器的大小。

+0

应该_always_检查'malloc'调用的返回值。就个人而言,我总是写一个简单的如果这样做:'if((str =(char *)malloc(50 * sizeof(char)))== NULL){fprintf(stderr,“Malloc error \ n”);出口(1); }' – PLPeeters