A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
>上記3のシングルコーテーションとして比較する関数を教えてください
聞きたいことはなんとなくわかりますが・・・間違いが多い(^^;
5 は 整数(int) の 5
"5" は 文字列(char *) の 5
'5' は 文字(char)の 5
''は1つの文字です。
""は文字列(ヌル文字で終わる文字の配列の先頭のポインタ)です。
char *Y = "5";
int YY;
YY = atoi(Y);
1 X > YY
2 strcmp(X, Y)
3 X > Y[0]
1 は 整数の比較
2 は 文字列の比較
3 は 文字の比較
文字列 Y の1文字目 Y[0] が '5' と同じことになります。
char *Y = "5";
char Y[2] = { '5', '\0' };
上記の二つは同じ内容になります。分かるかな?
No.4
- 回答日時:
文字と文字列の違いをまず理解しましょう。
教科書をよく読んでください。””でくくられた文字列定数(リテラル)は、基本的には <や>などによる比較は意味を持ちません。
現在の多くのコンピュータではASCIIを使っていますので
5<'5'ですが、メインフレームなどだと 5>'5' となるマシンもありえます(たとえばEBCDICを使っていて文字リテラルがsignedの場合)。
No.3
- 回答日時:
★C言語の初心者さんですね。
・C言語での文字列の比較は『strcmp』という関数になります。
『<』、『<=』、『>』、『>=』、『==』、『!=』などの比較演算子では比較できません。
・ですから質問者さんの
『上記1』は整数などの数値の比較、
『上記2』は文字列ポインタの比較?、
『上記3』は文字定数の比較になりますよ。
・また C言語での文字列は、文字型の配列を利用して表現します。
VisualBasic、JavaScript、Perlなどの文字列型とは構造が違います。
よって『Strncpy』関数のところは次のようになります。
char Y[ 10 ];←余裕を見て 10 バイトを指定です。
int YY;
strcpy( Y, "5" ); ←『Y』に『"5"』という文字列をコピー
YY = atoi( Y ); ←『Y』という文字列を整数値に変換して『YY』へ代入
●本題
・文字列の比較は『strcmp』で行います。
char aaa[] = "abc";
char bbb[] = "abcdef";
int cmp;
if ( (cmp = strcmp(aaa,bbb)) == 0 ){
printf( "『aaa=bbb』両方の文字列は同じです。\n" );
}
else if ( cmp < 0 ){
printf( "『aaa<bbb』aaa の文字列が小さいです。\n" );
}
else if ( cmp > 0 ){
printf( "『aaa>bbb』aaa の文字列が大きいです。\n" );
}
最後に:
・『strcmp』関数の戻り値は『0以下』、『0』、『0以上』の3つの状態を返しますが、
これが文字列の比較結果になります。
『0以下』は第1引数が第2引数よりも小さい(短いなど)です。
『0』 は第1引数と第2引数の文字列が全く同じです。
『0以上』は第1引数が第2引数よりも大きい(長いなど)です。
・文字列の最後は『\0』というNULL文字が終端になっています。
VisualBasic などでは自動的にメモリ容量が拡張したりしますが、C言語では拡張はしません。
もう少し C言語の特徴(文字列とは?)をお勉強して下さいね。
・以上。おわり。
No.2
- 回答日時:
何がしたいのかサッパリですが。
atoi のシグニチャは atoi( const char* ) なので間違ってるし、そもそも atoi は最早使われない関数。
ついでに strncpy のシグニチャは strncpy( char*, const char*, size_t )
マニュアルくらい読みましょう。
No.1
- 回答日時:
> 上記1は X > Y
> 上記2は X > YY となりますが
xの値がわかりませんので、これらの不等式が
成り立つかどうかはわかりません。
ところで、strncpyは引数が3つ必要です。
仮に、strcpyのつもりであったとしても、
1バイトの領域yに2バイト('5'と'\0')を
無理矢理コピーすると、どこかでとんでもないエラーが
発生するかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WSH(VBS)でJSONの文字列を読み...
-
C#でstringをポインタとして渡す
-
TCL言語で文字列検索方法を教え...
-
プログラムによく出てくるst...
-
16進数を2文字ずつ配列に格納し...
-
VB6.0でのバイナリデータの扱い...
-
C++で入力した文字列から数字を...
-
Shift_JIS(16進)を文字に変換す...
-
nullと""、\\0とEOFの違いにつ...
-
init関数の意味
-
C言語 配列の長さの上限
-
先頭アドレスとは何ですか?
-
System.IO.Directory.GetFiles...
-
配列の要素数に変数を入れたい...
-
C言語のポインタに直接アドレス...
-
関数から配列を返すには?
-
C言語において、 配列要素をひ...
-
Integer変数をカラにしたいので...
-
VBAのプログラムで、DIAG = 1# ...
-
C言語でのconstを返す関数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#でstringをポインタとして渡す
-
プログラムによく出てくるst...
-
nullと""、\\0とEOFの違いにつ...
-
シリアル通信で0x00を送信した...
-
%dなどの違い
-
TCL言語で文字列検索方法を教え...
-
WSH(VBS)でJSONの文字列を読み...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
C++で入力した文字列から数字を...
-
VB6.0でのバイナリデータの扱い...
-
16進数を2文字ずつ配列に格納し...
-
VBA-DLLの引数受け渡しについて
-
数字の入った配列をファイルへ...
-
引用符と二重引用符
-
C言語の勉強しています。すみま...
-
c#で他のアプリの文字入力フォ...
-
構造体→文字列→構造体 をする方法
-
バイナリファイル中の日本語文...
-
Excelシートを固定長のテキスト...
-
[C++]WCHARの1文字目しか表示で...
おすすめ情報