字符指针 为什么读取一次字符串后,后面的代码无法执行?
#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个回答

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题