C-将字符的多个连续出现替换为单个出现
如何用C语言中的单个字符替换一个字符的多个连续出现 例如,如果我有一个C-将字符的多个连续出现替换为单个出现,c,string,function,char,c-strings,C,String,Function,Char,C Strings,如何用C语言中的单个字符替换一个字符的多个连续出现 例如,如果我有一个char myString[]=“?hello?world???”我希望输出为?hello?world? 我找到了链接,但它替换了特定的模式。但是,如果重复字符的数量可变怎么办?可以使用一个循环来完成 给你 #include <stdio.h> char * remove_duplicates( char *s, char c ) { for ( char *p = s, *q = s; *q; )
char myString[]=“?hello?world???”
我希望输出为?hello?world?
我找到了链接,但它替换了特定的模式。但是,如果重复字符的数量可变怎么办?可以使用一个循环来完成 给你
#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;
}
假定不应将null终止字符作为函数的参数提供。否则,该函数将不起作用,并返回相同的字符串。以防万一
“?你好?世界?”
->“?你好?世界?”
#包括
#包括
int main()
{
char myString[]=“你好?世界?”;
int i,j,length=strlen(myString);
字符大小[长度];
char-prev;
对于(i=0,j=0),你尝试了什么,以及它是如何失败的?请刷新,以及。请尝试创建一个尝试向我们展示,描述你使用它的问题。你会把“L”当作“hello”中的重复字符吗?
"??hello?world????"
"?hello?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;
}