c语言输入一个字符串,如何在指定位置插入一个字符?

c语言输入一个字符串,如何在指定位置插入一个字符?,第1张

也许用链表比较好实现,下面是用数组实现的程序:

#include<stdio.h>

#include<string.h>

main()

{inti,j,k,m,n

chara[100],b[100],c

gets(a)

gets(b)

c=getchar()

m=strlen(a)

for(i=0i<mi++)

{if(a[i]==c)<br/>break<br/>}

if(i>=m)

{printf("出错!\n")<br/>return<br/>}

n=strlen(b)

k=m

for(j=m+nj>ij--,k--)

a[j]=a[k]

for(j=i,k=0j<n+ij++,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=0s1[i]i++ )

if ( s1[i]==k )

break

}

pos=i //记录下待插入的位置

len=strlen(s2) //得到s2长度

for( i=strlen(s1)i>=posi-- ) //后移字符串

{

s1[i+len]=s1[i]

}

strncpy( &s1[pos], s2, len ) //插入数据

printf("%s\n", s1 ) //输出字符串

}

方法一 使用stdio函数库提供的char函数,这里我们在MSDN离线版上学习一下其用法 可以看到,gets()用于从标准输入流读入一个整行(以’\n’或EOF)结束,写入ptr指向的字符数组,并返回这个指针出错或遇到文件结束时则返回NULL。 行末的’\n’从流中取出,但不写入数组。 gets()不检查被写入的数组大小。 所以我们可以很容易写出如下代码: #include<stdio.h>intmain(){charstr[25]={0}gets(str)printf("%s\n",str)return0} 实现后: 方法二 这里使用一个scanf函数提供的“%[]”格式来输入,这个格式可以让我们进行多字符的输入,同时决定输入结束的字符,只需要使用**^+我们需要停止的字符**下面为大家实际 *** 作一波: #include<stdio.h>intmain(){charstr[25]={0}scanf("%[^\n]",str)printf("%s\n",str)return0} 实现后: 我们甚至可以凭借%[ ^EOF ]来控制字符串的持续输入 。

c[5]只有5个空间无法完全容纳字符串"hello",因为这个字符串需要占用6个字符位置。

所谓自动加'\0'的问题是:你写在双引号中的,编译程序会认为是字符串,会自动为你添加上一个字符串结尾符号0,而不是运行时添加的。

如果你用debug方式运行程序,调试环境自动会把你开设的char

a[5]进行初始化0的工作,这时你再将第1位初始化时,后面的0仍存在就好象字符串结尾已经存在了。如果非debug运行则没有这个初始化工作。

如果你用字符方式初始化应当写:char

c[6]={

'h','e','l','l','o','\0'

}

希望对你能有所帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11809352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存