c/c++语言开发共享从用户获取字符串时出现分段错误

码:

int main() { char *name=NULL; int n; printf("nenter the stringn"); scanf("%s",name); n=strlen(name); printf("%d",n); return 0; } 

我得到分段错误。 代码有什么问题? 我已经包含了stdio.hstdlib.hstring.h

    您没有为指向char name指针分配任何内存。

    例:

     char * name = malloc( sizeof( char ) * MAX_STRING_LENGTH ) ; 

    C不是托管语言,所以你需要告诉你的字符串(char *)你记忆中的内存是多少。 这是malloc函数。

    顺便说一句,没有GarbageCollector,所以当你完成使用它时你需要释放你的char *。

    但要小心,malloc可以返回null,所以你的char *将无法存储任何char!

     int main(int argc, char **argv) { char *name = null; // Malloc your char * if ((name = malloc(sizeof( char ) * LENGTH_OF_YOUR_LARGER_INPUT)) == null) return; int n; printf("nenter the stringn"); scanf("%s",name); n=strlen(name); printf("%d",n); // Free the allocated memory to your char * free(name); } 

    试试这个,

     int main() { char *name = malloc(sizeof( char ) * LENGTH); // define LENGTH as you desired int n; printf("nenter the stringn"); scanf("%s",name); n=strlen(name); printf("%d",n); free(name); } 

    问题是你没有为指针分配内存。 因此,使用malloc(BUFSIZE)分配内存tp指针。 最后,你必须用free(name)释放你分配的内存。

    而不是char * name = malloc( sizeof( char ) * MAX_STRING_LENGTH ) ;

    使用

      char * name = malloc(MAX_STRING_LENGTH+1 ); //+1 is to store Null character 

    sizeof(char)==1所以你可以避免它。

    需要了解更多c/c++开发分享从用户获取字符串时出现分段错误,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享从用户获取字符串时出现分段错误相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980612.html

      (0)
      上一篇 2021年12月14日
      下一篇 2021年12月14日

      精彩推荐