>>939 環境によるが、コマンドプロンプトから
prog.exe param
などの様に打つと、
argcに「2」、argv[]に「prog.exe」「param」が格納される。
と言う環境がほとんどだ。
それ以前に、君は「コマンドプロンプトとはどのようなものか?」
から勉強すべきだろう。
943 :
もうすぐ就職試験 ◆pTadMR86pE :2005/04/07(木) 09:18:34
>>941-942 以下のようなプログラムです。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
char ch;
long l;
if(argc!=2) exit (1);
実際にdirで見ても表示されますし、プログラム的にも間違いは無いは無いと思うのですが、
何か原因があるのでしょうか?
プログラムが間違ってる。そのプログラムにはファイルを読み込む部分が無い。
945 :
もうすぐ就職試験 ◆pTadMR86pE :2005/04/07(木) 09:46:40
>>944 実際にはこの下にもプログラムが続いています。
しかし、printfでチェックしてみたのですが、上記のifにすらプログラムが進んでいませんでした。
なんだかよく分からないけど、
「数値を入力してください」
って表示する別のコマンド実行してるんじゃないの?
自分で作ったコマンドの名前は何なんじゃ?
情報を小出しする馬鹿につきあってると疲れるぜ?
これ以上環境やらIDEやらの質問が続くなら続くんなら他スレ行けよ。
プログラム名とコマンドが同じとか?
int main(int argc, char *argv[])
{ <-これ
に対応する
} <-これ
まで出てこないと、わかりません。
落ちたな
コマンドライン引数の事を聞く奴はこんなんばっかだな…。
結局解決したが、アホらしい原因だったので、説明するのが面倒で逃げたんだろうな。
956 :
もうすぐ就職試験 ◆pTadMR86pE :2005/04/07(木) 12:16:59
結局原因が分かりませんでした。
付録のサンプルコードをコンパイルしてみても駄目だったので、
コマンドラインの指定の仕方が不味かったみたいです。
ただ、他のソースは無事に実行できるので、
できなかったことはねじ伏せます。
いろいろ教えていただいたのにすみませんでした。
いよいよ構造体だ・・・。
>>956 他人の意見・質問をスルーするなら書き込むな。
958 :
950:2005/04/07(木) 12:43:31
959 :
デフォルトの名無しさん:2005/04/07(木) 14:04:33
文字列を数値として大小比較できる関数はありませんか?
文字列"0000000000000000001234567890"と
文字列"1234567890"は等しいと判断させたいのです
桁数が大きいので数値に変換するのは無理っぽいです
先頭から続く0を無視すれば良いだけだろ
"0000000000000000001234567890"なら32bitのintに
変換できる筈だがな。
32bitに収まらない数も扱うなら、long long int型でも使えば?
まぁ、文字のままで比較するなら、
1.先頭の0を除く
2.文字数を比べる
3.文字数が同じなら、strcmpで比べる
で出来る。
"9999999999999999999999999999"
>2.文字数を比べる
この必要性が分からない。
965 :
デフォルトの名無しさん:2005/04/07(木) 14:44:36
>>964 大小比較だからじゃない?
ん?strcmp?しらね。
new BigDecimal("0000000000000000001234567890").equals(new BigDecimal("1234567890"))
こっちかな?
new BigInteger("0000000000000000001234567890").compareTo(new BigInteger("1234567890"))
スレ違いになってきたぞ。
>>964 strcmp は辞書順だから、桁数が違うと
"1000"< "200" になる。
面倒くさいので動作テストはしてない。
数値以外の文字の混入は考慮無し。
int CmpNumStr (char *a, char *b)
{
int n;
while (*a == '0')
a++;
while (*b == '0')
b++;
n = strlen(a) - strlen (b);
if (n < 0)
return -1;
if (n > 0)
return 1;
return strcmp(a,b);
}
よく考えたら、strcmpの帰り値は、
-1や1だという規定は無いから、
n<0 n>0 のままで返していいか・・・
int CmpNumStr (char *a, char *b)
{
int n;
while (*a == '0')
a++;
while (*b == '0')
b++;
n = strlen(a) - strlen (b);
return n ? n : strcmp(a,b);
}
さぁ、いよいよ構造体だ・・・。
スペースは? カンマは?
読み飛ばせよ
976 :
デフォルトの名無しさん:2005/04/09(土) 07:44:28
小数点以下は?
記数法は?
(*(*hello)[5][5])[5]
一体、hello には何が入るのですか?
>977
そんな変数を宣言していること事態が間違いの始まり。
データ構造を見直した方が良いと思われ・・・
980 :
デフォルトの名無しさん:2005/04/09(土) 11:17:40
>>979 アフォか
見たこと/使ったことのない宣言が出てきただけで設計ミスであってたまるか
経験値低いぺーぺーがわかったつもりになってるとそんなことを言い出して無駄に流れを乱す
現在○%、みたいに処理の進行状況をprintfで表示したいんですけど
%の部分はそのままで○の部分だけを上書きして表示していくにはどうすればいいんですか?
標準ライブラリではたぶんできない。
通常の端末なら、
for (ic = 0; ic <= 100; ++ic) {
printf("%3d%%\r", ic);
}
で巧いこと表示できるかもしれない。
できる。
ncurses使うと楽だよ。
>>983 スゲー
今試してみたらできました!!
ありがとうございます
>>985 ウインドウズです
その他のレスくれた人もありがとう
>>977 世界地図を二次元座標表現し各地域での挨拶を表現する文字列の先頭4文字を座標上に配置したデータ全体へのポインタがhello。
これを惑星ごとに用意して切り替えることができる。
989 :
983:2005/04/09(土) 12:33:54
あーちくしょう。
fprintf(stderr, ...)にしないとリダイレクトで喰われるし、フラッシュされないからダメって書きにきたら…
ウィンドウズだったか(ヶ
みんな
>>988みたいに理解できてるのかと思うと鬱だわ
頭のメモリが足りねえ・・・
ワロスww