チョコミントアイス

ポインタ変数の配列のプログラム

#include<stdio.h>
void

main()
{
char *p[] = {"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE",
"JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
int i,j;
*p[0]=*p[2];
*p[0]=*p[2];

for(i = 0;i < 12; ++i){
printf("%2d 月:%s\n",i+1,p[i]);
}

for(i = 0;i < 12; ++i){
j = -1;
do{
++j;
printf("%4x ",p[i]+j);
} while (*(p[i]+j) != '\0');
printf("\n");
j = -1;
do{
++j;
printf(" %c ",*(p[i]+j));
}while (*(p[i]+j) != '\0');
printf("\n");
}
}
について、このプログラムを最も大きい値(ASCIIの文字コードが最も大きい値)を出力するプログラムに変更したいのですが、ASCIIの文字コードが何なのかよく分かりません。分かる方いましたら教えてください。よろしくお願いします。

A 回答 (3件)

#include<stdio.h>


void
main() {
char *p[] = {"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE",
"JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
int i,j;
char ret;
char *max;

for(i=0; i<12; i++) {
printf("%2d 月:%s\n",i+1,p[i]);
}

for(i=0, max=p[i]; i<(12-1); i++) {
for(j=0; max[j]!='\0'; j++) {
ret = max[j]-p[i+1][j];
if(ret)
break;
}

if(ret < 0) {
max = p[i];
}
}
printf("%s\n",max);
}

※文字列の長さのみが違う場合は誤動作します。

文字列の比較でしたらstrcmpを使うと楽ですよ。
学習目的でしたらすみません。。(汗
    • good
    • 0
この回答へのお礼

具体的に教えていただきまして、本当にありがとうございました。大変助かりました。

お礼日時:2009/12/11 15:59

>ASCIIの文字コードが何なのかよく分かりません


ASCIIコードと対応文字を表示(インデントは全角カナなので注意)
-------------
#include<stdio.h>
#include<ctype.h>
main()
{
 int i;
 printf("ASCII Code Display\n");
 printf("Hex: Charcter\n");
 for( i = 0x00; i <= 0xFF; i++ )
 {
  printf(" 0x%02x: ", i);
  if( iscntrl(i) )
  {
   printf("(NoDisplay)");
  }
  else
  {
   printf("%c", i);
  }
  printf("\n");
 }
}
-------------
    • good
    • 0

( ´・ω・`)つ【ASCII文字コード表】

http://e-words.jp/p/r-ascii.html
    • good
    • 0

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