C言語なら俺に聞け! Part 90

このエントリーをはてなブックマークに追加
916デフォルトの名無しさん:04/09/12 15:12:54
>>915
あるよ、うちのLinuxには。
917デフォルトの名無しさん:04/09/12 15:20:57
>>916
マジッスか
どっかにUPしてもらえませんか
918デフォルトの名無しさん:04/09/12 15:29:13
UPもなにも…フリーだし…
919デフォルトの名無しさん:04/09/12 15:31:01
せこせこするな。UPしてやれよw
920デフォルトの名無しさん:04/09/12 15:31:47
>>918
たった一つの関数のソース見るためだけに
わざわざOS落としてきたりはキツイっす
921デフォルトの名無しさん:04/09/12 15:34:18
>>920
あっそう。
922デフォルトの名無しさん:04/09/12 15:37:07
>>920
で、お次は
「たった一つの関数を理解するために
何千行ものコードを読むのはキツイっす」
か?
923デフォルトの名無しさん:04/09/12 15:44:02
>>922
それはないっす
924デフォルトの名無しさん:04/09/12 15:46:30
925デフォルトの名無しさん:04/09/12 16:11:32
>>924
かなり参考になります
どうもっす
926デフォルトの名無しさん:04/09/12 16:14:43
VCとかBCBとかにはちゃんと付いてきているはずなんだがな。
927デフォルトの名無しさん:04/09/13 22:15:13
>>926
あっそう。
928デフォルトの名無しさん:04/09/14 00:13:59
文字列⇒整数変換をしたいのですが、
標準関数の atoi() を使うと 0 がエラー扱いになってしまいます。
この制限を解決するスマートな方法はないでしょうか?
929デフォルトの名無しさん:04/09/14 00:20:38
strtol使うとか。
930デフォルトの名無しさん:04/09/14 00:21:05
>>928
if(sscanf(mojiretsu, "%d", &seisuu) != 1) goto hell;
931デフォルトの名無しさん:04/09/14 00:23:14
sscanfよりstrtolのほうがいいよな。
932デフォルトの名無しさん:04/09/14 00:24:14
評価基準を示さずに結論だけ言うDQNは放置
933デフォルトの名無しさん:04/09/14 00:30:40
930にはなぜsscanfを使うか理由が書いてないな。
934デフォルトの名無しさん:04/09/14 00:35:55
>>929
strtol() もエラー値が 0 なのでだめそうです。

>>930
sscanf() なら 0 が入力されてもエラー値と混同しないですね。
ありがとうございます。
935デフォルトの名無しさん:04/09/14 00:37:25
どうやら質問者の方が頭よさそうだなw
936デフォルトの名無しさん:04/09/14 00:43:02
>>934
もう少し身長にマニュアルを読んだほうがいいよ。
937デフォルトの名無しさん:04/09/14 00:45:02
935の頭は質問者と同レベル。
938デフォルトの名無しさん:04/09/14 00:45:15
>>934
はぁ…
939デフォルトの名無しさん:04/09/14 00:46:07
>>934
エラーかどうかを戻り値で判断すると思い込むのは危険だな。
940デフォルトの名無しさん:04/09/14 00:46:55
標準出力とファイル出力を選択できる機能はどうやれば出来ますか?
941デフォルトの名無しさん:04/09/14 00:47:26
>標準関数の atoi() を使うと 0 がエラー扱い
もうちょっとちゃんと言え。
>strtol() もエラー値が 0 なのでだめそうです。
もうちょっとちゃんと読め。
942デフォルトの名無しさん:04/09/14 00:47:41
>>939
オレも初めて数ヶ月は戻り値が全てと思ってたよ・・・
943デフォルトの名無しさん:04/09/14 00:48:40
>>940
どうやって選択するの?
944デフォルトの名無しさん:04/09/14 00:49:07
>>940
fprintfやfputsなどの引数を変えればいいのでは?
945デフォルトの名無しさん:04/09/14 00:49:13
dup()dup2()
946デフォルトの名無しさん:04/09/14 00:49:32
pipe()
947デフォルトの名無しさん:04/09/14 00:51:20
>>943
そこで悩んでます。if文とかでも出来そうかなとは思うんですがイマイチわからなくて
948デフォルトの名無しさん:04/09/14 00:52:13
write(1, ...);
write(2, ...);
でいいんじゃねw
949デフォルトの名無しさん:04/09/14 00:52:37
>>947
コマンドライン引数でファイル名が指定されていればファイルに、指定されていなければ標準出力に書き出すとか。
argc,argv(main関数の引数)の使い方はわかる?
950デフォルトの名無しさん:04/09/14 00:54:35
>>949
すいませんわかりません…
951デフォルトの名無しさん:04/09/14 00:54:42
if(/*標準出力なら*/)
  fp = stdout;
else
  fp = fopen("hoge.txt", "w");

fprintf(fp, "Hello");
952デフォルトの名無しさん:04/09/14 00:58:48
>>950
#include <stdio.h>
int main(int argc,char *argv[])
{
FILE *fp;
if(argc<=1)
fp=stdout;
else
fp=fopen(argv[1],"w");
if(fp==NULL)
return 1;
fprintf(fp,"はろーわーるど\n");
if(argc>1)
fclose(fp);
return 0;
}

コンパイルしてできた実行ファイルがtestonなら、
testonで標準出力に、teston file.txtならfile.txtに書き出す。
953デフォルトの名無しさん:04/09/14 00:59:33
>>951
あ、出来そうですね。ありがとうございます
954デフォルトの名無しさん:04/09/14 01:00:54
>>952
神様ありがとう!感謝します。
955デフォルトの名無しさん:04/09/14 01:01:47
>>941
よく読んでみました。
strtol() の返り値が 0 の場合、第2引数が数値かどうかを判断すればいいわけですね。

long value = strtol(numStr, &endptr, 10);
if (value == 0 && (*endptr != '\0')) goto ERROR;

こんな感じでしょうか・・・。
956デフォルトの名無しさん:04/09/14 01:04:36
>>955
数字列のあとの空白("-387 "←こういうの)を許さないならそれでいい。
957956:04/09/14 01:05:27
例がまずかったな
"0 "
958デフォルトの名無しさん:04/09/14 01:11:34
>>957
アドバイスありがとうございます。
stdinから入力されたCSV形式の数値解析をしたかったんですが、
sscanf(), strtol() どちらでも実現できそうですので、
もう少し考えてみてよりシンプルな処理になる方を使ってみます。
959デフォルトの名無しさん:04/09/14 01:39:02
>>958
まだ、いまいち分かってないっぽいな。
どうでもいいけど。
960デフォルトの名無しさん:04/09/14 03:01:39
現在あるデータをC言語を使って処理するプログラムを作り、
それがほぼ終わりました。この課題を通してやっと初級の入り口に
立てて、プログラミングの面白さが分かった気がします。
本業ではないですが、プログラミングを続けてレベルアップしたいと
思っています。しかし、次のデータとか、特に課題が見つかりません。

何か面白い課題はないのでしょうか。
恐らくこのままではプログラマーでもない私は今やっているような
面白い課題に自然に巡り合うことは今後もうないと思います。

面白いデータや課題があれば、教えてください。
よろしくお願いします。
961デフォルトの名無しさん:04/09/14 03:14:16
オレが学生のころは、ゲーム作ったり、テキストエディタを作ったり、
お絵かきツールを作ったり、言語のインタプリタを作ったり、いろいろしてた。

作るといっても、書籍のソースを打ち込んで、改造したりってのがほとんどだったけど。
962デフォルトの名無しさん:04/09/14 03:28:09
>>961
どうもありがとうございます。
ツールという課題がありますね(思いつきもしませんでした・・
自分が使いたいと思うツールを作って使うのは面白そう。

963デフォルトの名無しさん:04/09/14 03:39:50
>>962
このスレでも宿題スレでもいいからテンプレリンク含め目を通せばいいよ
964ビル・ジョブス:04/09/14 04:41:03
>962
次はWin32APIを勉強するとかデバイス制御を勉強するのがお奨めです。
コンピュータ言語なんて単なる表現ツールですよ。
(C言語は他の言語に比べてかなり洗練されてるから止められないけど)
965デフォルトの名無しさん
>>939
つーか「エラー値」と聞いて何かを早合点している時点でアウツ