マンガでよめる痔のこと・薬のこと

abcdefacdeeabとあるとします。

abと文字が来るときだけabを++に置き換えたいのです。

aだけ変えるのを考えたのですが
bがある場合は+
とbがない場合はaも変えない
と言うのが考えつきません。


char *a;
int i;

fgets=(moji,100,stdin);

*a=moji[100];

for( i = 0 ; ; i++ )
{
if( *(a+i) == 'a' )
{
moji[i]='+';

else
{
moji[i]=*( a + i );
}
if(*( a + i ) == '\0');

break;

}



見にくいですがよろしくお願いします。

A 回答 (3件)

#2さんの改良。

BM法っぽくして同じ文字を2度見るのをやめてスピードアップ。

 char *a , moji[100];

 fgets(moji,100,stdin);
 a = moji ;
 if (*a != 0) {
  for(;*(a+1) !=0 ;a++ ) {
   if( *a == 'a' ) {
    if ( *(a+1) == 'b') {
     *a = '+' ;
     *(a+1) = '+' ;
    }
   } else {
    a++;
   }
  }
 }
    • good
    • 0

 char *a , moji[100];



 fgets(moji,100,stdin);
 a = moji ;
 if (*a != 0) {
  for(;*(a+1) !=0 ;a++ ) {
   if( *a == 'a' && *(a+1) == 'b') {
    *a = '+' ;
    *(a+1) = '+' ;
   }
  }
 }
二文字位ならハードコーディングでも問題無いと思う。
    • good
    • 0

#include <stdio.h>


#include <string.h>

int main() {
 char data[] = "abcdefacdeeab";
 char* position = data;
 while ( position = strstr(position,"ab") ) {
  *position++ = '+';
  *position++ = '+';
 }
 puts(data);
 return 0;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング