如何在C中用一个字符替换多个连续出现的字符?例如,如果我有char myString[]="??hello?world????",我希望输出为?hello?world?。我找到了this链接,但它替换了特定的模式。但是,如果重复字符的数量是可变的呢?
char myString[]="??hello?world????"
?hello?world?
m1m5dgzv1#
它可以使用一个循环来完成。给你。
#include <stdio.h> char *remove_duplicates(char *s, char c) { for (char *p = s, *q = s; *q;) { if (*++q != c || *p != c) *++p = *q; } return s; } int main(void) { char s[] = "??hello?world????"; printf("\"%s\"\n", s); printf("\"%s\"\n", remove_duplicates(s, '?')); return 0; }
程序输出为
"??hello?world????" "?hello?world?"
假定不应将空终止字符作为函数的参数提供。否则函数无效并返回相同的字符串。
llew8vvj2#
以防万一附加答案"??hello?world????"-〉"?helo?world?"
"??hello?world????"
"?helo?world?"
#include <stdio.h> #include<string.h> int main() { char myString[]="??hello?world????"; int i,j,length=strlen(myString); char res[length]; char prev; for(i=0,j=0;i<=length;i++) { if(i==0) { prev=myString[i]; res[j]=prev; j++; } else { if(prev!=myString[i]) { res[j]=myString[i]; prev=res[j]; j++; } } } printf("%s",res); return 0; }
2条答案
按热度按时间m1m5dgzv1#
它可以使用一个循环来完成。
给你。
程序输出为
假定不应将空终止字符作为函数的参数提供。否则函数无效并返回相同的字符串。
llew8vvj2#
以防万一附加答案
"??hello?world????"
-〉"?helo?world?"