形式で時間を表す char 配列を指定して計算を実行するプログラムに取り組んでいますHH:MM:SS
。個々の時間単位を解析する必要があります。これは、時間だけに焦点を当てた、私のコードの短縮バージョンです。
unsigned long parseTime(const char *time)
{
int base = 10; //base 10
long hours = 60; //defaults to something out of range
char localTime[BUFSIZ] //declares a local array
strncpy(localTime, time, BUFSIZ); //copies parameter array to local
errno = 0; //sets errno to 0
char *par; //pointer
par = strchr(localTime, ':'); //parses to the nearest ':'
localTime[par - localTime] = '\0'; //sets the ':' to null character
hours = strtol(localTime, &par, base); //updates hours to parsed numbers in the char array
printf("errno is: %d\n", errno); //checks errno
errno = 0; //resets errno to 0
par++; //moves pointer past the null character
}
問題は、入力が無効な場合 (たとえばaa:13:13
)、に更新されstrtol()
ていないために明らかにエラーを検出しないため、エラー処理を行うことができないことです。私は何を間違えていますか?errno
1