マクロを削除したいです。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
c learner

マクロを削除したいです。

#1

投稿記事 by c learner » 9年前

このプログラムの123.45678と書かなければいけない部分を大域変数char NUM[]="123.45678"の一箇所にしたいです。どうすればよいでしょうか?

コード:

#include<stdio.h>
char NUM[]="123.45678";
# define A char NUM[]="123.45678"
int reverse();
int replace();
main(){
  printf("abc.def->fed.cba:\t%s->",NUM);
  reverse();
  putchar('\n');
  printf("abc.def->def.abc:\t %s->",NUM);
  replace();
  putchar('\n');
  printf("         \t\t\t-----------\n");
}
int reverse( void ){
  A;
  char temp[100];
  char *p1, *p2;	
  p1 = NUM;
  p2 = temp;	
  while ( *p1 != '\0' ) {
    p1++;
  }
  while (p1 > NUM) {	
    p1--;		
    *p2 = *p1;	
    p2++;		
  }
  *p2 = '\0';		
  printf( "%s\n",temp);
  return 0;
}
int replace(void){
  A;
  char temp[50],temp2[50];
  char *p1,*p2,*p3;	
  p1=NUM;
  p2=temp;
  p3=temp2;
  while(*p1!='.'){*p2=*p1;p1++;p2++;
  }
  while(*p1!='\0'){p1++;*p3=*p1;p3++;
  }
  printf("%s.%s\n",temp2,temp);
  return 0;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: マクロを削除したいです。

#2

投稿記事 by みけCAT » 9年前

c learner さんが書きました:このプログラムの123.45678と書かなければいけない部分を大域変数char NUM[]="123.45678"の一箇所にしたいです。どうすればよいでしょうか?
NUMの内容を書き換える部分が無いので、普通に余計な行を消せばいいでしょう。
その他バグ修正と微調整もしてみました。

コード:

#include<stdio.h>
char NUM[]="123.45678";
int reverse(void); /* voidを追加 */
int replace(void); /* voidを追加 */
int main(void){ /* intとvoidを追加 */
  printf("abc.def->fed.cba:\t%s->",NUM);
  reverse();
  putchar('\n');
  printf("abc.def->def.abc:\t %s->",NUM);
  replace();
  putchar('\n');
  printf("         \t\t\t-----------\n");
  return 0; /* return 0;を追加 */
}
int reverse( void ){
  char temp[100];
  char *p1, *p2;	
  p1 = NUM;
  p2 = temp;	
  while ( *p1 != '\0' ) {
    p1++;
  }
  while (p1 > NUM) {	
    p1--;		
    *p2 = *p1;	
    p2++;		
  }
  *p2 = '\0';		
  printf( "%s\n",temp);
  return 0;
}
int replace(void){
  char temp[50],temp2[50];
  char *p1,*p2,*p3;	
  p1=NUM;
  p2=temp;
  p3=temp2;
  while(*p1!='.'){*p2=*p1;p1++;p2++;
  }
  *p2='\0'; /* 追加 (バグ修正) */
  while(*p1!='\0'){p1++;*p3=*p1;p3++;
  }
  printf("%s.%s\n",temp2,temp);
  return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

c learner

Re: マクロを削除したいです。

#3

投稿記事 by c learner » 9年前

みけCAT さん できました!微調整なども参考になりました!ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る