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

将数组S2覆盖到数组S1的第 i 个位置之后···请高手帮帮忙好吗?多谢了···i

2012-02-24 
将数组S2覆盖到数组S1的第 i 个位置之后请高手帮帮忙好吗?谢谢了急急急急急急急急急急急急急急急急急急急

将数组S2覆盖到数组S1的第 i 个位置之后···请高手帮帮忙好吗?谢谢了···急急急急急急急急急急急急急急急急急急急急i
// 覆盖.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
#include "iostream.h"
#include "stdlib.h"
#include "string.h"

#define MAXSTRLEN 255
typedef unsigned char SString[MAXSTRLEN +1] ;
SString S1;
SString S2;
SString T;

void creatshuzu(SString &S)//建立数组
{
// S=(SString*)malloc((MAXSTRLEN +1)*sizeof(SString));
cout<<"请输入字符串数组中的数据:"<<endl;
char ch;

int i=0;
while( (ch=getchar())!='\n')
{
++i;
S[i]=ch;


}
S[0]=i; // s[0] 中存放字符串的个数

}


void fugai( int i)
{
T[ S1[0]+S2[0] ];

if( i+S2[0]<=MAXSTRLEN) //将S2覆盖到 S1 的第i个位置之后中
{
int j=1;
for(i;i<=S1[0];i++)
{
S1[i]=S2[j];
j++;
}

}
else
{
for(int k=1;k<=i-1;k++)
T[k]=S1[k];
for(int p=1;p<=S2[0];p++)
T[i-1+p]=S2[p];

}
T[0]=i-1+S2[0];
  S1=T;/////////////////////////////////////
  free(T);
  

}

void shuchu()//将数组中数据输出
{
int i;
for(i=1;i<=S1[0];i++)
cout<<S1[i];
 
}



int main(int argc, char* argv[])
{
creatshuzu(S1);
  creatshuzu(S2);
cout<<"请输入一个整数作为您要覆盖的位置:"<<endl;
int i;
cin>>i;
fugai(i);
shuchu();

return 0;
}


[解决办法]
代码格式太乱了,另外,搂住还有很多基础知识需要再复习一下!帮你整理代码格式的同时,对几个原则性的错误进行了注释。

C/C++ code
#include   "stdafx.h " #include   "stdio.h " #include   "iostream.h " #include   "stdlib.h " #include   "string.h " #define     MAXSTRLEN     255 typedef   unsigned char SString[MAXSTRLEN+1]   ; SString   S1;      //定义了三个全局变量的数组          SString   S2; SString   T; void   creatshuzu(SString       &S)//建立数组 { //   S=(SString*)malloc((MAXSTRLEN   +1)*sizeof(SString));      cout << "请输入字符串数组中的数据: " <<endl;      char   ch;      int     i=0;      while((ch=getchar())!= '\n')      {            ++i;            S[i]=ch;      }      S[0]=i;     //   (s[0]中存放字符串的个数)  ,如果以字符形式输出s[0],肯定是乱码 } void fugai(int i) {      T[   S1[0]+S2[0]   ];        //在全局变量中已经定义了T[],其空间早已分配好了,此处知识定义了一个局部变量而已,不可能改变全局变量T[]的空间      if(   i+S2[0] <=MAXSTRLEN)   //将S2覆盖到   S1   的第i个位置之后中       {             int j=1;             for(i;i <=S1[0];i++)             {                   S1[i]=S2[j];                   j++;              }       }      else            //这后面的语句试图另外扩展一个空间,然后将空间首地址付给S1,别忘了S1是数组名(表示地址常量),不可能被改变。     {            for(int   k=1;k <=i-1;k++)            T[k]=S1[k];            for(int   p=1;p <=S2[0];p++)            T[i-1+p]=S2[p];      }      T[0]=i-1+S2[0];       S1=T;        //此处程序将崩溃       free(T);     //free()仅仅针对动态分配在堆上的空间进行释放(与malloc对应),数组空间分配在栈上或静态数据区,free()对数组操作无效} void   shuchu()//将数组中数据输出 {      int   i;      for(i=1;i <=S1[0];i++)      cout < <S1[i]; } int   main(int   argc,   char*   argv[]) {         creatshuzu(S1);         creatshuzu(S2);         cout << "请输入一个整数作为您要覆盖的位置: " <<endl;         int  i;         cin>> i;         fugai(i);         shuchu();         return   0; }
[解决办法]
记住:当你找工作的时候。如果函数名是用拼音写的,人家直接让你走人。。。

还有以后把问题表述清楚。。貌似你还开了一个帖子。。。
[解决办法]
代码:
C/C++ code

#include   "stdafx.h " #include   "stdio.h " #include   "iostream.h " #include   "stdlib.h " #include   "string.h " #define     MAXSTRLEN     255 typedef   unsigned char SString[MAXSTRLEN+1]   ; SString   S1;        SString   S2; SString   T; void   creatshuzu(SString       &S)//建立数组 { //   S=(SString*)malloc((MAXSTRLEN   +1)*sizeof(SString));      cout << "请输入字符串数组中的数据: " <<endl;      char   ch;      int     i=0;      while((ch=getchar())!= '\n')      {            ++i;            S[i]=ch;      }      S[0]=i;  //   s[0]   中存放字符串的个数   }void fugai(int i){      T[   S1[0]+S2[0]   ];             if(   i+S2[0] <=MAXSTRLEN)    //将S2覆盖到   S1   的第i个位置之后中      {             int j=1;             for(i;i <=S1[0];i++)             {                   S1[i]=S2[j];                   j++;              }       }      else                {            for(int   k=1;k <=i-1;k++)            T[k]=S1[k];            for(int   p=1;p <=S2[0];p++)            T[i-1+p]=S2[p];      }      T[0]=i-1+S2[0];       S1=T;              free(T);     } void   shuchu()//将数组中数据输出{      int   i;      for(i=1;i <=S1[0];i++)      cout < <S1[i]; } int   main(int   argc,   char*   argv[]) {         creatshuzu(S1);         creatshuzu(S2);         cout << "请输入一个整数作为您要覆盖的位置: " <<endl;         int  i;         cin>> i;         fugai(i);         shuchu();         return   0; }
[解决办法]
到这来讨论吧

菜鸟学编程之C++/MFC: QQ群 41977413 C++/MFC编程开发技术,有问题讨论问题,无事适当吹水;一起讨论学习,习惯潜水者勿加

菜鸟学编程之C/C# : QQ群 41976716 C/C#编程开发技术,有问题讨论问题,无事适当吹水;一起讨论学习,习惯潜水者勿加

菜鸟学编程之VB/ VBA : QQ群 20772662 VB/ VBA编程开发技术群,有问题讨论问题,无事适当吹水;一起讨论学习,习惯潜水者勿加

热点排行