文字列から指定の文字列をとるには?


prin  2004-07-07 20:43:50  No: 53929

はじめまして。初心者の者です。
今、Timeという変数に"17h"という文字が入っていて、その文字から'h'を取り除いた"17"をAという変数に入れたいのですがうまくいきません。

char Time[10];
char A[10];

forなどでまわして取ろうしているのですが、うまくいきません。
初歩的な事で申し訳ありません。アドバイスお願い致します。


シャノン  2004-07-07 21:42:27  No: 53930

常に、あらゆるケースにおいて、Time は "17h" であり、"17" を A に入れたいのですか?

…というか、A に "17" を入れたいのであれば、
char A[] = "17";
とか
strcpy( A, "17" );
となるのですが、そうじゃないですよね?

長引くスレッドによくある話なのですが、質問者が使用を把握していないというのがあります。
例えば今回の例でいけば
・Time は常に "17h"、A は常に "17"
・Time は2桁の数字 + 'h'、A はそこから 'h' を除いたもの
・Time はn桁の数字 + 'h'、A はそこから 'h' を除いたもの
など、さまざまなケースが考えられます。

2桁の数字 + 'h' だろうと回答者が推測して回答して、実はn桁でした、なんて話になると、どんどんスレッドが伸びてしまいます。
例ではなく、仕様を説明してください。
今回提示された条件だけでは、
char A[] = "17";
でも、決して間違いとは言えません。


tetrapod  2004-07-07 21:44:12  No: 53931

どーいうソースを希望されているかわかりませんがたとえば
・頭から2文字を取り出す
A[0]=Time[0]; A[1]=Time[1]; A[2]=0;
とか?


hiroyuki  2004-07-07 21:45:47  No: 53932

//まず、格納しようとしている領域を0で初期化します。
memset(A,'\0',sizeof(A));

//Aの領域にTimeの文字数から1を引いた
//文字数でコピーします。
strncpy(A,Time,strlen(Time)-1);


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加