-2
私はキーボードで導入した配列から数値を抽出し、1つの整数に変換します。私のコードは次のとおりです。printf関数を表示せずに配列とプログラムから整数値を抽出します
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
int r, t, i;
char expressio[t];
char vector[50];
char rpn[t][4];
printf("Introduce the expresssion");
fgets(expressio, t, stdin);
t = strlen(expressio);
for (i = 0; i <= t; i++) {
if (isdigit(expressio[i])) {
r = atoi(expressio[i]);
vector[i] = rpn[0][r];
}
return 0;
}
}
私はこの警告持っている: 'ATOI' の引数1を渡し
キャストなしで整数からポインタを行い
私はそれを解決するにはどうすればよいですか?
また、私はこのプログラムを実行すると何もせず、 "式を導入する"さえ印刷しません。なぜこうなった?
コンパイラの警告を有効にし、エラーとして処理してください! 't'は定義されていません。そして 'atoi'のmanページを見てください。 –
'-Wall -O2'引数でコードをビルドしようとすると、コードが正しく動作しない理由を考え始める前に修正すべき4つの警告が表示されます。 'atoi()'警告について - [man atoi](http://linux.die.net/man/3/atoi)を見てください: 'const char'に**ポインタ**を与えることを期待しています(つまり文字列)が、代わりに 'char'を与えています。 –
ループを見て、誤って戻りを入れてしまい、プログラムが終了します。そして、 "式を導入する"が表示されないのは、cの出力がフラッシュされたときにのみ更新されるstdoutと呼ばれるFILEに格納されているためで、stdoutは通常改行またはプログラム終了時にフラッシュされるからです。プログラムの終了後ではなく、実行時にそれを見るために\ nを追加してみてください。 –