替换c中给定字符串的字符串的空格

时间:2018-03-13 05:12:43

标签: c string programming-languages

我想用字符串“IIT”替换空格。我尝试在我的字符串中使用循环,当我遇到空格时,我试图用给定的字符串替换它。但是空格类似于字符串中的单个字符,因此它不会替换为单词,所以请帮助我如何用给定的单词替换我的withspace。谢谢。

3 个答案:

答案 0 :(得分:0)

C String manipulation标准库API并不强大,无法简单地替换字符串。因此,您可以使用Flex之类的词法分析器实用程序,它们可以使用REGEX查找和manipulate您的文本。

  

这是一个程序,它将多个空格和制表符压缩为一个空格,并丢弃在一行末尾找到的空格:

%%
[ \t]+        putchar( ' ' );
[ \t]+$       /* ignore this token */

Flex将为您生成一个C程序,它可以完成所有工作。

教程: http://alumni.cs.ucr.edu/~lgao/teaching/flex.html

Flex

答案 1 :(得分:0)

你不能,因为你说你想用“IIT”替换空格。这里“IIT”有3个字节,空格是单个字节。那么你怎么能存储它。您可以通过在放置字符串“IIT”之前分配更多内存来完成此操作。有关详细信息,请参阅realloc

答案 2 :(得分:0)

使用多个字符替换字符串中的单个字符而不使用第二个字符串的技巧是从头到尾处理字符串。

首先,遍历字符串一次,计算要替换的字符数。然后计算您的替换将添加多少额外字符。确保字符串有足够的空间来处理新字符。然后从字符串中的最后一个字符开始,将每个字符移动到字符串的新结尾,用替换字符替换特定字符。

示例,将x替换为zz

xcfdxdfxg---

(破折号是为字符串分配的空间,但当前没有使用,当然字符串末尾应该有一个\0,也可以正确移动)

xcfdxdfxg---
xcfdxdfx---g
xcfdxdf--zzg
xcfdxd--fzzg
xcfdx--dfzzg
xcfd-zzdfzzg
xcf-dzzdfzzg
xc-fdzzdfzzg
x-cfdzzdfzzg
zzcfdzzdfzzg