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


prin  2004-07-07 20:43:50  No: 53929  IP: [192.*.*.*]

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

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

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

編集    削除
シャノン  2004-07-07 21:42:27  No: 53930  IP: [192.*.*.*]

常に、あらゆるケースにおいて、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  IP: [192.*.*.*]

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

編集    削除
hiroyuki  2004-07-07 21:45:47  No: 53932  IP: [192.*.*.*]

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

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

編集    削除