设计C语言程序:字符串处理

设计C语言程序:字符串处理,第1张

#include "stdio.h"

#include "string.h"

#include "ctype.h"

void Delete(char str[])

{

int i,j,Length,StartBlank=0,EndBlank=0,MiddleBlank=0

Length=strlen(str)

for(i=0i<Lengthi++) /* 删除前导空格 */

if(str[i]==' ') StartBlank++

else break

for(j=0j<Lengthj++)

str[j]=str[j+StartBlank]

Length-=StartBlank

for(i=Length-1i>=0i--) /* 删除后导空格 */

if(str[i]==' ') EndBlank++

else break

Length-=EndBlank

while(EndBlank>0)

{

str[Length-1+EndBlank]=str[Length+EndBlank]

EndBlank--

}

i=0/* 删除中间多余空格 */

while(i<Length)

{

if(str[i]==' ')

{

if(str[i+1]==' ')

{

for(j=i+1j<Lengthj++)

str[j]=str[j+1]

MiddleBlank++

Length--

}

else i++

}

else i++

}

}

void FindCount(char str[])

{

char FindWord[20],*p1,*p2

int count=0/* 查找单词出现的次数 */

printf("Enter a Findword:\n")

gets(FindWord)

p1=str

p2=FindWord

while(*p1!='\0')

{

if((*p1==*p2)&&(!isalpha(*(p1-1))))

while((*p1==*p2)&&(*p2!='\0'))

{ p1++p2++}

else p1++

if((*p2=='\0')&&((*p1==' ')||(*p1=='\0'))) count++/* 所查找单词完全匹配 */

p2=FindWord/* 重置查找单词 */

}

printf("FindCount:%d\n",count)

}

void Swap(char str[])

{

char SwapWord[20],FindWord[20],*p1,*p2

int j,s,k,i=0,SwapWordLength,strLength,FindWordLength,n

printf("Enter a FindWord:\n")

gets(FindWord)

printf("Enter a SwapWord:\n")

gets(SwapWord)

p1=str

p2=FindWord

strLength=strlen(str)/* 原英文句子长度 */

FindWordLength=strlen(FindWord)/* 查找单词长度 */

SwapWordLength=strlen(SwapWord)/* 替换单词长度 */

n=SwapWordLength-FindWordLength/* 查找和替换单词长度的差 */

while(*p1!='\0')

{

if((*p1==*p2)&&(!isalpha(*(p1-1))))

while((*p1==*p2)&&(*p2!='\0'))

{ p1++p2++i++}

else { p1++i++}

if((*p2=='\0')&&((*p1==' ')||(*p1=='\0'))) /* 所查找单词完全匹配 */

{

if(n<0)

{

j=i-FindWordLength

for(k=0k<SwapWordLengthk++)

str[j++]=SwapWord[k]

for(s=is<strLengths++)

str[j++]=str[s]

while(j<strLength)

str[j++]='\0'

strLength=strlen(str)

i+=n

p1+=n

}

else

{

for(s=strLength+ns>is--)

str[s]=str[strLength--]

j=i-FindWordLength

for(k=0k<SwapWordLengthk++)

str[j++]=SwapWord[k]

strLength=strlen(str)

i+=n

p1+=n

}

}

p2=FindWord

}

}

void main()

{

char str[1000]

printf("Input a English sentence:\n")

gets(str)/* 输入一个英文句子 */

printf("Output English sentence:\n")

puts(str)

Delete(str)/* 删除前导空格,后导空格,中间多余空格 */

printf("Delete English sentence:\n")

puts(str)

FindCount(str)/* 统计某个单词出现次数 */

Swap(str)/* 查找并替换某个单词 */

printf("Swap English sentencd:\n")

puts(str)

}

思路:字符串连接先需要找到第一字符串的结束位置,接着把第二字符串元素放到第一字符串后面,最后加上结束标志即可。参考代码:拼接123和456#includevoid mystrcat(char a[],char b[]){//字符串连接函数 int i=0,j=0while(a[i++]!='\0')//找到a的结束位置 i--while(b[j]!='\0'){//把b元素赋值到a中 a[i++]=b[j++]} a[i]='\0'//加上结束标志 }int main(){char a[100],b[100]scanf("%s%s",a,b)mystrcat(a,b)puts(a)return 0}/*运行结果:123 456123456*/


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

原文地址: http://outofmemory.cn/yw/12196460.html

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

发表评论

登录后才能评论

评论列表(0条)

保存