用C语言编写一个在字符串中插入一个字符的程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编写一个在字符串中插入一个字符的程序相关的知识,希望对你有一定的参考价值。

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#defineN100

voidInsert(char*s);

intmain()

charstr[N];

printf("Inputastring:");

gets(str);

Insert(str);

printf("Insertresults:%s\\n",str);

return0;

voidInsert(char*s)

charstr[N];

char*t=str;

strcpy(t,s);

for(;*t!='\\0';s++,t++)

*s=*t;

s++;

*s='';

*s='\\0';/*在字符串s的末尾添加字符串结束标志*/

扩展资料

C语言通过定义一个char类型的二维数组实现,通过二维数组的行索引可得到数组中的每个字符串,列的大小限定了每个字符串所能包含的最大字符个数,所以采用这种定义方式时,列的大小必须不能小于数组所有字符串的最大长度。

C语言编程定义一个字符串的数组:

str=

“IloveC.”,

“IloveC++.”,

“IloveJAVA.”,

“IlovePython.”,

“IloveLabVIEW.”

参考技术A

#include<stdio.h>
#include<string.h>
#define maxsize 10 //可输入的字符串最大字符数  可修改!!
int main()


    char str[maxsize+2];//数组定义最大字符数+2,1位留给字符位移,1位留给字符串结束符'\\0'
    char c;
    int index,i,slen;
    printf("输入一个字符串(最多%d个字符):",maxsize);
    scanf("%s",str);
    slen=strlen(str);
    getchar();
    printf("输入要插入的字符:");
    scanf("%c",&c);
    while(1)
    
        printf("输入要插入的位置(第几个元素的位置):");
        scanf("%d",&index);
        if(index<1 || index>slen-1)
        
            printf("超出范围,重新输入 \\n");
            continue;
        
        break;
    
    for(i=slen-1;i>=index-1;i--)
        str[i+1]=str[i];
    str[index-1]=c;
    str[slen+1]='\\0';
    printf("插入后的字符串字符串:%s \\n\\n",str);
    return 0;

参考技术B 把测字符串的的语句 移到前面去

求解,用C语言编写一个程序,查找一个字符串在另一个字符串中出现的次数,谢谢大家了!

大家能用最简单的数组方法来解这个问题吗?我是初学者!

//第一种

public static Map count(String str)

Map&lt;String,Integer&gt;maps=new HashMap&lt;String,Integer&gt;();

for(int i=0;i&lt;str.length();i++)

//获取下标所对应的字符

String key=String.valueOf((str.charAt(i)));

//判断该字符在map中是否存在

if(!maps.containsKey(key))

//如果不存在,将key(该字符)与value(出现的次数)存到map中

maps.put(key,1);

else

//如果存在,将该字符对应的value取出

int val=maps.get(key);

//给该字符所对应的value+1

maps.put(key,val+1);

return maps;

//第二种

public static Map count1(String str)

Map&lt;String,Integer&gt;map=new HashMap&lt;&gt;();

char arr[]=str.toCharArray();//转换成字符数组

Arrays.sort(arr);//排序数组

String temp=new String(arr);//重新产生字符串

//遍历统计

for(int startIndex=0;startIndex&lt;str.length();)

char c=temp.charAt(startIndex);//获取第一个相同字符

String t=String.valueOf(c);//把第一个字符转换成字符串

//获取字符最后出现的位置

int lastIndex=temp.lastIndexOf(t);

map.put(t,(lastIndex+1-startIndex));

startIndex=lastIndex+1;//下次开始的位置

return map;

//第三种

public static Map count2(String str)

Map&lt;Character,Integer&gt;map=new HashMap&lt;&gt;();

for(int i=0;i&lt;str.length();i++)

int x=0;//记每个不同字符出现的次数

char c1=str.charAt(i);

for(int m=0;m&lt;=(str.length()-1);m++)

if(c1==str.charAt(m))

x++;

map.put(c1,x);

return map;

//第四种

public static Map count3(String str)

Map&lt;String,Integer&gt;map=new HashMap&lt;&gt;();

HashSet&lt;Character&gt;hSet=new HashSet&lt;Character&gt;();

char[]cs=str.toCharArray();

for(char c:cs)

hSet.add(c);

ArrayList&lt;Character&gt;list=new ArrayList&lt;Character&gt;(hSet);

int n=hSet.size();//有多少种字符

int[]times=new int[n];//保存每种字符的出现次数

for(char c:cs)

times[list.indexOf(c)]++;

for(int i=0;i&lt;n;i++)

map.put(""+list.get(i),times&lt;i&gt;);

return map;

//展示

public static void show(Map&lt;String,Integer&gt;map)

for(Map.Entry i:map.entrySet())

System.out.println("“"+i.getKey()+"”"+"出现的次数为"+i.getValue()+"次");

扩展资料:

out关键字会导致参数通过引用来传递。这与ref关键字类似,不同之处在于ref要求变量必须在传递之前进行初始化。若要使用out参数,方法定义和调用方法都必须显式使用out关键字。例如:

classOutExample

staticvoidMethod(outinti)

i=44;

staticvoidMain()

intvalue;

Method(outvalue);//valueisnow44

尽管作为out参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。

ref和out关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用ref参数,而另一个方法采用out参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的,因此将不会编译以下代码:

classCS0663_Example

//compilererrorCS0663:"cannotdefineoverloaded

//methodsthatdifferonlyonrefandout"

publicvoidSampleMethod(outinti)

publicvoidSampleMethod(refinti)

但是,如果一个方法采用ref或out参数,而另一个方法不采用这两类参数,则可以进行重载,如下所示:

classRefOutOverloadExample

publicvoidSampleMethod(inti)

publicvoidSampleMethod(outinti)

备注

属性不是变量,因此不能作为out参数传递。

参考资料:

百度百科——out(C#中的out)

参考技术A 函数返回str2在str1中出现的次数
#include <string.h>
unsigned int strstrcount( char *str1, char *str2 )

char *str = str1;
unsigned int c = 0;

while( (str = strstr( str, str2 )) != NULL )

c++;
str++;

return c;
本回答被提问者和网友采纳
参考技术B #include <stdio.h>
#include <string.h>

void main()

int Find(char * a,char * b);
char a[100],b[100];
printf("输入字符串a:");
scanf("%s",a);
printf("输入字符串b:");
scanf("%s",b);
int d=Find(a,b);
if(d==-1)
printf("不存在\n");
else
printf("在位置:%d\n",d);


int Find(char * a,char * b)

int alen=strlen(a);
int blen=strlen(b);
if(blen>alen)
return -1;
int i,j;
for(i=0;i<=a-b;i++)

char c[100];
for(j=0;j<blen;j++)
c[j]=a[i+j];
c[j]='\0';
if(strcmp(c,b)==0)
return i;

return -1;
参考技术C

#include<stdio.h>

#include<string.h>

int main()

int i,j,k=0;

char a[40]="basd asasdfg as zx67 asd mklo";

char b[20];

gets(b);

int count=0;

int tags=0;

for(i=0;i<strlen(a);)

if(a[i]==b[0])

for(k=i,j=0;j<strlen(b);j++,k++)

if(a[k]==b[j])

tags=1;

else

tags=0;

if(tags==1&&j==strlen(b)-1)

count++;

i++;

printf("%d",count);

参考技术D #include "string.h"
#include "stdio.h"
int strcount(char *,char *);
void main()
char s[20],ss[20];
scanf("%s%s",s,ss);
printf("n=%d",strcount(s,ss));


int strcount(char *p,char *q)
int i=0,n=0;
if(strlen(q)==0)
return 0;
while (strlen(p)>=strlen(q))

for(i=0;i<strlen(q);i++)
if(*(p+i)!=*(q+i))
break;
else if(i==(strlen(q)-1))
n++;

p++;

return n;

以上是关于用C语言编写一个在字符串中插入一个字符的程序的主要内容,如果未能解决你的问题,请参考以下文章

用linux c语言编写 为一个文件里面的内容的每一行添加一个指定的字符

ZZNUOJ_用C语言编写程序实现1137:查找最大元素(附完整源码)

用c语言编程编写函数,实现把一个字符串连接到后面一个字符串。并编写程序,在程序中自定义一个字符串数组

求解,用C语言编写一个程序,查找一个字符串在另一个字符串中出现的次数,谢谢大家了!

C语言编写一个程序从特定的文件中提取特定的字符串。

C语言编写字符替换程序。