首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

。access violation

2013-11-21 
求助。access violation#includeiostreamusing namespace std//将一个字符串插入到另一个字符串的指定位

求助。access violation
#include<iostream>
using namespace std;

//将一个字符串插入到另一个字符串的指定位置处
void insert(char *str1, int pos, char *str2)
{
 char tmp[100], *p1;
 p1 = str1 + pos;
 int i = 0;
 while (p1 != '\0')
 {
 tmp[i++] = *p1++;
 }//pos以后的字符复制到tmp[]

 p1 = str1 + pos;
 while (str2 != '\0')
 {
 *p1++ = *str2++;
 }//复制str2到str1
 for (int j = 0; j < i; j++){
 *p1++ = tmp[j];
 }//把tmp[]复制回来
 *p1 = '\0';//最后加上'\0'
 
 
}

int main()
{
char a[8] = "c++java", b[5] = "haha";
insert(a, 3, b);
cout << "***********************************************************";
for (int i = 0; i < 15; i++){
cout << "a 是:" << a[i] << endl;
}

system("pause");
return 0;
}
[解决办法]


#include<iostream>
using namespace std;

//将一个字符串插入到另一个字符串的指定位置处
void insert(char *str1, int pos, char *str2)
{
char tmp[100], *p1;
p1 = str1 + pos;
int i = 0;
while (*p1 != '\0')  //p1是个地址,对判断是否为'\0'应该用*p1
{
tmp[i++] = *p1++;
} //pos以后的字符复制到tmp[]

p1 = str1 + pos;
while (*str2 != '\0') //同上
{
*p1++ = *str2++;
} //复制str2到str1
for (int j = 0; j < i; j++){
*p1++ = tmp[j];
} //把tmp[]复制回来
*p1 = '\0'; //最后加上'\0'


}

int main()
{
char a[20] = "c++java", b[5] = "haha";  //a扩容
insert(a, 3, b);
cout << "***********************************************************"<<endl;
//for (int i = 0; i < 15; i++){  //有越界
for (int i = 0; i < strlen(a); i++){
cout << "a 是:" << a[i] << endl;
}

system("pause");
return 0;
}


这是修改之后的代码

热点排行