Ghua975 2022-12-27 22:05 采纳率: 83.3%
浏览 21
已结题

简单修改正确代码后输入输出不成功

删掉了原本正确代码中char*c="abcd";的内容而下边加了两行printf 和 scanf 为什么就不行了呢

int MyStrlen(const char*c)
{
    int count = 0;
    while (*c!= 0)
    {
        ++count;
        ++c;
    }
    return count;
}
int main()
{
    char *c;
    printf("Input the string:");
    scanf("%s",&*c);
    printf("The length of the string is %d\n", MyStrlen(c));
    return 0;
}

  • 写回答

2条回答 默认 最新

  • ShowMeAI 2022-12-27 22:22
    关注

    望采纳

    • char*c="abcd"; 这一行被删掉后,c指针没有指向任何有效的内存空间。当你使用 scanf 函数将字符串输入到 c 中时,实际上是将字符串输入到了一个未知的内存空间中。这可能会导致程序崩溃或产生其他未知的行为。
    • 要正确使用 scanf 函数,需要为 c 分配足够的内存空间。可以使用 malloc 函数或定义一个固定长度的数组来分配内存空间。例如
    char c[100];
    

    或者

    c = (char*)malloc(100 * sizeof(char));
    
    free(c)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月5日
  • 已采纳回答 12月28日
  • 创建了问题 12月27日

悬赏问题

  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历