#include <stdio.h>
int main( void )
{
char *p;
p = "Winter";
printf( "%s \n", p );
return 0;
}
#include <stdio.h>
int main( void )
{
char *p1, *p2;
p1 = p2 = "Winter";
while ( *p1 ) {
++p1;
}
while ( p1 > p2 ) {
--p1;
putchar( *p1 );
}
putchar( '\n' );
return 0;
}
※この解答例について、質問をいただきましたので追記しておきます。
>この最初のwhile文がよくわかりません。
>できたら詳しく教えていただけないでしょうか?
最初のwhile文ですが、ここは書き換えると
while ( *p1 != '\0' ) {
++p1;
}
になります。つまり、文字列の最後までポインタを進めています。
C言語に慣れている人はこれを解答例のように、
while ( *p1 ) {
++p1;
}
と書きます。
これは、C言語では
= 0:偽
≠0:真と決められているため、
while( *p1!=0 )は「*p1が真の間」であり、
while( *p1 )と解釈できるためです。
私自身は実はこのような書き方は好きではないのですが、
C言語プログラマは好んでこの書き方を用いますので、
このような書き方も覚えておいてください。(2000.9.30)
#include <stdio.h>
#include <string.h>
#define N 10
int main( void )
{
char *p[N] = {
"one", "two", "three",
"four", "five", "six",
"seven", "eight", "nine",
"ten"
};
char *temp;
int i, j, min;
for ( i = 0; i < N - 1; i++ ) {
min = i;
for ( j = i + 1; j < N; j++ ) {
/* 文字列の比較 */
if ( strcmp(p[min], p[j]) > 0 ) {
min = j;
}
}
/* ポインタの配列の入れ換え */
temp = p[i];
p[i] = p[min];
p[min] = temp;
}
for ( i = 0; i < N; i++ )
puts( p[i] );
return 0;
}
問3の解答例の並び換えの手順を詳しく教えてほしいというメールをいただきましたので、解説図を書いてみました。
▼戻る▼
「初心者のためのポイント学習C言語」 Copyright(c) 2000-2004 TOMOJI All Rights Reserved