最近在看吉林大學的C程序設計的課件,有一章講到這個函數動手寫了一下。
題目:
編寫一個Insert函數實現在字符串s中的第i個位置插入字符串s1;
在VC++2005中編譯這段程序沒有任何的Error和warning但是運行就會錯誤,不知道為什么阿,請高手指點一二。
#include "stdafx.h"
#include <iostream>
using namespace std;
void Insert(char *s, char *s1, int i)
{
?char *p,*q;
?p = s + strlen(s); // p?指向s的末尾+1
?q = p + strlen(s1);?//q 指向新構造的字符串的\0?
?*q = '\0';
?//?
?for(p--,q--;p>=s+i-1;)
?{
??*(p--) = *(q--);
?}
?//
?for(p=s+i-1;*s1;)
?{
??*(p++) = *(s1++);
?}
}
int _tmain(int argc, _TCHAR* argv[])
{
?char *s = "Student";
?char *s1 = "Teacher";
?Insert(s,s1,3);
// 期待的輸出是StuTeacherdent;
?cout<<s;
?return 0;
}
// 還有我如果把insert函數改成下面的應該也是可以的吧
void Insert2(char *s, char *s1, int i)
{
?char *p,*q;
?p = s + strlen(s); // p?指向s的末尾+1
?q = p + strlen(s1);?//q 指向新構造的字符串的\0?
?*q = '\0';
?//?
?for(p--,q--;p>=s+i-1;)
?{
??*p-- = *q--;
?}
?//
?for(p=s+i-1;*s1;)
?{
??*p++ = *s1++;
?}
}