#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define MAXLEN 100
typedef struct
{
char ch[MAXLEN];
int len;
}sstring;
//創建字串
void StrAssign(sstring &str,char cstr[])
{
int i;
for(i = 0 ;cstr[i] != '\0'; i++)
str.ch[i] = cstr[i];
str.len = i;
}
//串的插入
int strinsert(sstring *s,int pos,sstring t)
{
int i;
if(pos<0||pos>s->len)
return 0;
if(s->len+t.len<=MAXLEN)
{
for(i=s->len+t.len-1;i>=t.len+pos;i--)
{
s->ch[i]=s->ch[i-t.len];
}
for(i=0;i<t.len;i++)
{
s->ch[i+pos]=t.ch[i];
s->len=s->len+t.len;
}
}
else if(pos+t.len<=MAXLEN)
{
for(i=MAXLEN-1;i>t.len+pos-1;i--)
s->ch[i]=s->ch[i-t.len];
for(i=0;i<t.len;i++)
s->ch[i+pos]=t.ch[i];
s->len=MAXLEN;
}
else
{
for(i=0;i<MAXLEN-pos;i++)
s->ch[i+pos]=t.ch[i];
s->len=MAXLEN;
}
return 1;
}
//洗掉
int strdelete(sstring *s,int pos,int len)
{
int i;
if(pos<0||pos>(s->len-len))
{
printf("洗掉的位置不合理!");
return 0;
}
for(i=pos+len;i<s->len;i++)
s->ch[i-len]=s->ch[i];
s->len=s->len-len;
return (1);
}
//輸出
void Output(sstring s)
{
int i;
for(i = 0 ; i < s.len; i++)
printf("%c",s.ch[i]);
printf("\n");
}
void main()
{
char c[100];
sstring str,newstr;
int i,j;
printf("請輸入要創建的字串:");
scanf("%s",c);
StrAssign(str,c);
Output(str);
//插入
printf("請輸入要插入的字串:");
scanf("%s",c);
StrAssign(str,c);
printf("請輸入要插入的位置:");
scanf("%d",&i);
strinsert(&newstr,i,str);
printf("結果為");
Output(newstr);
//洗掉
printf("請輸入你想要洗掉的位置:");
scanf("%d",&i);
printf("請輸入你想要洗掉的長度:");
scanf("%d",&j);
strdelete(&newstr,i,j);
printf("洗掉后為:\n");
Output(newstr);
}
哪兒錯了
uj5u.com熱心網友回復:
報錯資訊是啥uj5u.com熱心網友回復:
沒有報錯資訊,是對的,但是執行的時候插入洗掉結果出不來轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/225178.html
標籤:C++ 語言
上一篇:C語言
下一篇:求
