ここから本文です

この問題が解ける方がいたら解答よろしくお願いします。

uxk********さん

2019/12/1122:32:08

この問題が解ける方がいたら解答よろしくお願いします。

int str2num,precnt,return ans,int ans,int precnt,解答,問題

閲覧数:
40
回答数:
1

違反報告

ベストアンサーに選ばれた回答

etn********さん

2019/12/1217:07:59

回答1:関数を使わない場合

int str2num( char *sp ){
int precnt;
int tmp[1024];
int cnt;
int ans;
int dig;

/* 入力された文字数をカウント */
for(precnt=0; sp[precnt]!='\0'; ++precnt);
/* 文字入力無しか、先頭が数字以外の場合は戻り値を0にして終了 */
if(precnt == 0 || (int)sp[0] <= 47 || (int)sp[0] >= 58){
ans=0;
return ans;
}

/* 数字のみ抜き出してtmp[]に格納 */
cnt=0;
for(int i = 0; i <= precnt-1;++i){
if( 48 <= (int)sp[i] && (int)sp[i] <= 57){
tmp[cnt]=(int)sp[i];
++cnt;
}else{
break;
}
}


/* 10進数にする */
ans=0;
for(int j = 0; j <= cnt-1;++j){
dig=1;
for(int k = 1; k <= cnt-j-1;++k){
dig = dig * 10;
}
ans+=(tmp[j]-48)*dig;
}
return ans;
}

回答2:関数を使う場合
この場合は
#include <stdlib.h>
を入れておく必要があるそうです。

int str2num( char *sp ){
int ans;
ans = atoi( sp );
return ans;
}

質問した人からのコメント

2019/12/12 22:30:48

ご丁寧にありがとうございます!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる