しばらく経ちましたが、まだ特定のコードを機能させようとしています。以前、さまざまなコマンドなどについていくつか質問をしましたが、これが最後の質問になることを願っています (すべての質問を 1 つのコードにまとめます)。
私は基本的にしたい:
*入力をスキャンします (文字である必要がありますか?)
*番号かどうかを確認してください
※そうでない場合はエラーを返す
*その文字を浮動小数点数に変換します
*値を別の変数にコピーします (ここでは imp と呼びます)
これが私が思いついたものです:
編集されたコード*
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
main(){
int digits;
float imp=0;
char* alpha;
do{
printf("Enter input\n\n");
scanf("\n%c",alpha);
digits=isdigit(alpha);
if(digits==0){
printf("error\n\n");
}
imp=atof(alpha);
}while(digits==0);
}
問題は、このコードがまったく機能しないことです... atof は const char でなければならず、変更しようとすると失敗し続けます。私は多くのことを試して失敗し続けていると信じているので、イライラしてここで質問せざるを得ませんが、うまくいくまで安心することはできませんxDだから、あなたの助けが本当に必要です.
このコードが機能しない理由を教えてください。何が間違っているのですか? 私はまだCを学んでおり、あなたの助けに本当に感謝しています:)
atmを指定した編集 エラーは次のとおりです。
Argument no 1 of 'isdigit' must be of type 'const int', not '<ptr>char'
編集 このコードは正常にコンパイルされますが、入力が入力されるとクラッシュします。
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
main(){
int digits;
float imp=0;
char* alpha=0;
do{
printf("Enter input\n\n");
scanf("\n%s",alpha);
digits=(isdigit(alpha[0]));
imp=atof(alpha);
}while(digits==0);
}