文字列の中から1~5桁の数字を抜き出したい
ある命令プログラムを作っているのですが、文字列の中に命令語を書いてその後に続く数字を抜き出したいのですがうまくいきません
ソースを見ていただきたいのですが
@ke の命令語の後で1~5桁の数字を記載しているのですが
数字の部分を文字から数字に変えたいのです。
その後
@ke 数字
を正式な命令文として扱いたいのですがソースを見ていただけるとわかると思いますが問題があります。
・文字をatoiで数字に変換できない(キャスト演算子を変えてもだめだった)
・ソースのプログラムの書き方ではやたらと長々しくなってしまう。
どのようにしたら問題が解決できますか?
----以下ソース----
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(){
char kei[100]="abc@ke 4567def@ke 789";
int i=0;
int g=NULL;
while(i<15){
if(kei[i]=='@'){
i++;
if(strnicmp(&kei[i],"ke ",3)==0){
i+=3;
//後に続く数字を抜き出して処理したい
if(isdigit(kei[i])){
if(isdigit(kei[i+1])){
if(isdigit(kei[i+2])){
//・・・・以下全部で5桁分の数字を判定していく けど正直こんなややこしい方法をとらなくてもスマートにできるはず
}
else{
g=(atoi(kei[i])) * 10 +atoi(kei[i]); //型名が違うからatoiに入らないといわれる
}
}
else{
g=atoi(kei[i]); //型名が違うからatoiに入らないといわれる
}
}
else{
printf("\n命令の仕方が間違っています\n");
}
}
}
else{
printf("%c",kei[i]);
i++;
}
}
return 0;
}
お礼
ご回答ありがとうございます。 道で見かけるものと数字を関連付けて覚える方法は聞いたことがありましたが、体のパーツに当てはめる方法は初耳でした。なるほど~。そういう方法も面白そうですね。