在这段代码上工作,但由于某些原因,它一直在崩溃。strlen代码不能正常工作
任何人有一个想法,我做错了什么
char *str;
printf("Enter a string\n");
gets(str);
printf("The size of the string is %d", strlen(str));
system("PAUSE");
return 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;
您还没有分配任何内存str
。声明缓冲区,例如char str[50]
,但请注意buffer overflows。
谢谢你解决了这个问题。 – danielrieske
@ user3206159既然这个答案对你有帮助,你可以通过点击旁边的小复选标记来接受它。这会给你和mdsl一些声望点,并将你的问题标记为已解决。这不是必需的,但强烈建议。 – computerfreaker
您只创建了一个char *指针,指向内存中的随机空间,并且您尝试使用它来执行某些操作 - 这就是您的程序崩溃的原因。
应创建字符数组:
char str[50];
或动态地进行字符串使用malloc分配内存:
char* str;
str = (char *)malloc(50*sizeof(char)); // allocate memory
// some operations
free(str); // deallocate memory
其中50是您的预计缓冲器的大小。
应该_always_检查'malloc'调用的返回值。就个人而言,我总是写一个简单的如果这样做:'if((str =(char *)malloc(50 * sizeof(char)))== NULL){fprintf(stderr,“Malloc error \ n”);出口(1); }' – PLPeeters
@Lafexlos从标题中删除标签是一个有用的编辑,我认为它太小 – yizzlez