作者:hacker 日期:2022-07-13 分类:网站黑客
第一种是从固定位置插入特定字符串(例子里面假设是从第三位开始,所以公式里面的数字是3)【公式为红色字体部分)
第二种是从字符串里面指定的字符后面插入字符串(公式在编辑栏里面)
PS:例子里面C列是需要插入的特定字符串
用串S拷贝出另一个串T,对串T从头至尾扫描,对非数字字符原样写入串S,对于数字字符先写一个$符号再写该数字字符,最后,在S串尾加结束标志。使用此方法是牺牲空间,赢得时间。
#include stdio.h
int fun(char *s)
{
char t[80];
int i, j;
for(i=0; s[i]; i++) /*将串s拷贝至串t*/
t[i]=s[i];
t[i]='\0';
for(i=0,j=0; t[i]; i++)
/*对于数字字符先写一个$符号,再写该数字字符*/
if(t[i]='0' t[i]='9')
{
s[j++]='$';
s[j++]=t[i];
}
/*对于非数字字符原样写入串s*/
else
s[j++]=t[i];
s[j]='\0'; /*在串s结尾加结束标志*/
return 0;
}
int main()
{
char s[80];
printf ( "Enter a string:" );
scanf ("%s", s); /*输入字符串*/
fun(s);
printf ("The result: %s\n", s); /*输出结果*/
return 0;
}
也许用链表比较好实现,下面是用数组实现的程序:
#includestdio.h
#includestring.h
main()
{ int i,j,k,m,n;
char a[100],b[100],c;
gets(a);
gets(b);
c=getchar();
m=strlen(a);
for(i=0;im;i++)
{if(a[i]==c)br/ break;br/ }
if(i=m)
{printf("出错!\n");br/ return;br/ }
n=strlen(b);
k=m;
for(j=m+n;ji;j--,k--)
a[j]=a[k];
for(j=i,k=0;jn+i;j++,k++)
a[j]=b[k];
printf("%s\n",a);
}
设计过程:
定义两个字符串s2,s2,字符k
输入两个字符串 s1 、 s2 和 s1 中任意字符 k
先遍历 s1 找到指定字符 k,记录下当前位置
从k字符开始,按s2的长度后移其余的数据
将s2拷贝到k所在的位置
输出s1。
代码如下:
#include stdio.h
#include string.h
void main()
{
char s1[100];
char s2[20];
char k;
int i,pos,len;
printf("input s1: ");scanf("%s", s1 );
printf("input s2: ");scanf("%s", s2 );
getchar();//滤掉回车符
printf("input k: ");scanf("%c", k );
for( i=0;s1[i];i++ )
if ( s1[i]==k )
break;
}
pos=i; //记录下待插入的位置
len=strlen(s2); //得到s2长度
for( i=strlen(s1);i=pos;i-- ) //后移字符串
{
s1[i+len]=s1[i];
}
strncpy( s1[pos], s2, len ); //插入数据
printf("%s\n", s1 ); //输出字符串
}
设计过程字符串在指定位置插入:
定义两个字符串s2,s2,字符k
输入两个字符串 s1 、 s2 和 s1 中任意字符 k
先遍历 s1 找到指定字符 k字符串在指定位置插入,记录下当前位置
从k字符开始字符串在指定位置插入,按s2字符串在指定位置插入的长度后移其余字符串在指定位置插入的数据
将s2拷贝到k所在的位置
输出s1。
代码如下:
#include stdio.h#include string.hvoid main(){ char s1[100]; char s2[20]; char k; int i,pos,len; printf("input s1: ");scanf("%s", s1 ); printf("input s2: ");scanf("%s", s2 ); getchar();//滤掉回车符 printf("input k: ");scanf("%c", k ); for( i=0;s1[i];i++ ) { if ( s1[i]==k ) break; } pos=i; //记录下待插入的位置 len=strlen(s2); //得到s2长度 for( i=strlen(s1);i=pos;i-- ) //后移字符串 { s1[i+len]=s1[i]; } strncpy( s1[pos], s2, len ); //插入数据 printf("%s\n", s1 ); //输出字符串}
已有1位网友发表了看法:
访客 评论于 [2022-07-13 16:22:35] 回复
:" ); scanf ("%s", s); /*输入字符串*/ fun(s); printf ("The result: %s\n", s); /*输出结果*/ return 0;}c语言输入一个字符串,如何在指定位置插入一个字