No.4ベストアンサー
- 回答日時:
>ifの中に入らないのですが
>どうしてでしょうか?
isdigit()は「引数が'0'~'9'の範囲ならtrueを返す」つまり「引数が48~57の範囲ならtrueを返す」と言う仕様です。
atoi()は「文字列を数字の並びと解釈して、数値に変換する」と言う仕様です。
従って「atoi(s)」や「atoi("5")」は「5」を返します。
なので「isdigit(atoi(s))」や「isdigit(atoi("5"))」は「isdigit(5)」と同じです。
isdigit()は「引数が48~57の範囲ならtrueを返す」ので引数が「5」の場合はfalseを返します。
falseは0と等しいですから「(isdigit(atoi(s)) != 0)」は「(false != 0)」つまり「(0 != 0)」と同じです。
「0 != 0」の演算結果はfalseですから「if(isdigit(atoi(s)) != 0){」は「if(false){」と同じです。
if文の判定式がfalseの場合、if文に続く文は実行されません。
>atoiいれなくてもいいのか・・
>うーむ
isdigit()は「文字が'0'~'9'かどうか?」を調べるのですから、atoiで「文字列を数値にしてしまった後の値」は調べられません。
>それと文字列の最初の文字が数字かどうかの判定 をしたいのですが
>どうすればいいのか教えて下さい。
「isdigit(調べたい文字を1文字)」でOK。
文字列sの先頭の文字は「*s」または「s[0]」なので「isdigit(*s)」か「isdigit(s[0])」でOK。
No.5
- 回答日時:
処理系不明なので断定的なことはいうべきではありませんが...
すでに回答が出ているように、atoi(s)は整数値の5を返します。
この5が、'0'~'9'のいずれかの数字に該当すれば、isdigitは真を返します。今回はそうではなかったということでしょう。
なお、'0'がどんな値になるかは処理系に依存します。
標準規格で保証されているのは、'0'~'9'が連続した整数値であること、および'0'~'9'の値が正であることだけです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- PHP c言語 文字 - '1'+26 3 2022/03/26 20:58
- C言語・C++・C# int temp = 0; if(isdigit(arr[i])){//文字が数字であれば(0~9) 1 2022/03/27 01:37
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムによく出てくるst...
-
構造体→文字列→構造体 をする方法
-
nullと""、\\0とEOFの違いにつ...
-
16進数を2文字ずつ配列に格納し...
-
%dなどの違い
-
C++で入力した文字列から数字を...
-
文字コードによる表記
-
バイナリファイル中の日本語文...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
C言語の課題で困っています;
-
sprintf関数での文字列変換につ...
-
WSH(VBS)でJSONの文字列を読み...
-
【c++】文字列の操作
-
シリアル通信で0x00を送信した...
-
char型配列の最大要素数
-
C言語 配列の長さの上限
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
関数から配列を返すには?
-
char*を初期化したいのですが
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
nullと""、\\0とEOFの違いにつ...
-
C++で入力した文字列から数字を...
-
%dなどの違い
-
C#でstringをポインタとして渡す
-
16進数を2文字ずつ配列に格納し...
-
TCL言語で文字列検索方法を教え...
-
プログラムによく出てくるst...
-
WSH(VBS)でJSONの文字列を読み...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
数字の入った配列をファイルへ...
-
構造体→文字列→構造体 をする方法
-
VB6.0でのバイナリデータの扱い...
-
char型配列の最大要素数
-
[C++]WCHARの1文字目しか表示で...
-
アルファベットをカウント、
-
VBA-DLLの引数受け渡しについて
-
c#で他のアプリの文字入力フォ...
-
C言語の勉強しています。すみま...
-
Shift_JIS(16進)を文字に変換す...
-
バイナリファイル中の日本語文...
おすすめ情報