|
すずです。
先ほど見失ったソースを発見しました。
while( *p )について、どなたかご教授ください。
#include < stdio.h >
/* マクロ定義 */
#define RESULT_ERROR ( -1 )
#define RESULT_SUCCESS 0
/* 関数のプロトタイプ宣言 */
char parseOpe();
long parseValue();
/* グローバル変数宣言 */
char *p;
/* メイン関数 */
int main ( )
{
char buffer[ 128 ];
long value1,value2;
char ope;
while ( (p = gets(buffer)) != NULL ){
value1 = parseValue();
while ( *p ){
ope = parseOpe();
value2 = parseValue();
if( ope == '+' )
value1 += value2;
else if( ope == '-' )
value1 -= value2;
else{
puts("不正な演算です");
return RESULT_ERROR;
}
}
printf("%s = %ld\n",buffer,value1);
}
return RESULT_SUCCESS;
}
/* 正の整数文字列を数値に変換する処理 */
long parseValue()
{
long value = 0;
while ( *p ){
char ch = *p;
if( ch < '0' || ch > '9' )
break;
value *= 10;
value += ch - '0';
p ++;
}
return value;
}
/* 演算子の文字を得る処理 */
char parseOpe()
{
return *p ++;
}
|