东枫科技 2019-08-22 09:08 采纳率: 50%
浏览 207
已采纳

字符指针 为什么读取一次字符串后,后面的代码无法执行?

#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[]) {
  char * name;
  int size;
  scanf("%s\n",name);
  size = sizeof(name);
  printf("%d\n", size);
  printf("%d\n", strlen(name));
  printf("%s\n",name );
  return 0;
}

无法按照自己想要的运行。

  • 写回答

1条回答 默认 最新

  • J4cks0n 2019-08-22 09:24
    关注

    大概算是野指针问题,你这个name连个地址都没分配就往里装东西了。谁知道他地址在哪里,
    要么你写成
    char name[256];栈上分配
    要么
    name = (char*)malloc(sizeof(char)*256); 最后free(name);堆上分配
    malloc和free要加头文件stdlib.h

    还有个问题,scanf那里把\n去掉

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?