• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列の中から1~5桁の数字を抜き出したい)

文字列から数字を抜き出す方法

このQ&Aのポイント
  • 文字列の中から1~5桁の数字を抜き出す方法がわかりません。
  • ソースコードにはキャスト演算子を試しましたがうまくいきませんでした。
  • 現在の実装方法ではコードが冗長になってしまいます。よりスマートな実装方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yama5140
  • ベストアンサー率54% (136/250)
回答No.1

>数字の部分を文字から数字に変えたいのです。  ×atoi( kei[i] );  ○atoi( &kei[i] );  http://www.bohyoh.com/CandCPP/C/Library/atoi.html #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char kei[ 100 ] = "abc@ke 4567def@ke 789"; int i = 0, iVal; while( i < 15 ){ if( 0 == strncmp( &kei[ i ], "@ke ", 4 ) ){ i += 4; iVal = atoi( &kei[ i ] ); printf( "@ke %d\n", iVal ); } i++; } return 0; }

nanaka2223
質問者

補足

ありがとうございます。 こんな感じにできました。 今のままだと5桁以上も読み取ってしまうので改良が必要ですが ---以下ソース--- #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 j; int g=NULL; while(i<21){ if(kei[i]=='@'){ i++; if(strnicmp(&kei[i],"ke ",3)==0){ i+=3; if(isdigit(kei[i])){ g=atoi(&kei[i]); for(j=1;j<5;j++){ if(isdigit(kei[i+j])){ g=g; } else{ break; } } } else{ printf("命令の仕方が間違っています\n"); } //数字格納できました 処理します。 printf("\n\n%d\n\n",g); } } else{ printf("%c",kei[i]); i++; } } return 0; }

すると、全ての回答が全文表示されます。

専門家に質問してみよう