本人刚学c++遇到一道难题求指点。解决办法
本人刚学c++遇到一道难题求指点。。。?



之后按enter时就出现了中断

为什么会出现这个问题啊?怎么解决啊?
------解决方案--------------------
这样是不会报错得
你报错得原因在于 你随便使用strlen(temp+1);
你这个temp都没初始化 strlen是遇到\0结束的 所以你开辟的空间是未定义的大小
或许 编译器 在第一用函数局部变量的时候是随机的 当调用完成 有得编译器会把值赋空
所以你第一次 很小概率出问题 第二次 直接就开辟了一个空间
//注明 这个编译器的实现 我只是猜测 毕竟我又不是写那个的
但是 什么看适合理就怎么猜测 这往往都是对的
之后按enter时就出现了中断
为什么会出现这个问题啊?怎么解决啊?
------解决方案--------------------
// dsds.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <Cstring>
#include <string>
#include <stdio.h>
char *getname()
{
char temp[50];
gets(temp);
char *pn = new char[51];
strncpy(pn,temp,49);
return pn;
}
int main ()
{
char *fname;
char *lname;
printf("输入first name\n");
fname = getname();
printf("%s\n",fname);
printf("输入last name\n");
lname = getname();
return 0;
}
这样是不会报错得
你报错得原因在于 你随便使用strlen(temp+1);
你这个temp都没初始化 strlen是遇到\0结束的 所以你开辟的空间是未定义的大小
或许 编译器 在第一用函数局部变量的时候是随机的 当调用完成 有得编译器会把值赋空
所以你第一次 很小概率出问题 第二次 直接就开辟了一个空间
//注明 这个编译器的实现 我只是猜测 毕竟我又不是写那个的
但是 什么看适合理就怎么猜测 这往往都是对的