#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*/欢迎分享,转载请注明来源:内存溢出
评论列表(0条)