1 :
v(^o^i)d :
04/07/07 02:52
2 :
デフォルトの名無しさん :04/07/07 03:02
---------------糸冬----------------
3 :
デフォルトの名無しさん :04/07/07 03:13
乙
前スレは中国の核くらいにきれいに終わったな。
6 :
デフォルトの名無しさん :04/07/07 03:30
v(^o^i)d
推奨NGワード ↓
scanf
9 :
デフォルトの名無しさん :04/07/07 09:33
long型(32bit)よりも大きな整数を扱いたいときは どうしたらよいのでしょうか?
10 :
デフォルトの名無しさん :04/07/07 09:39
unsigned long long int a; とか宣言すれば、aは少なくとも64bit以上です。
11 :
デフォルトの名無しさん :04/07/07 10:40
ファイルローカル(static)な配列の宣言だけ先にして、後から定義ってできないんですか? extern だとできるようなんですけど。
12 :
デフォルトの名無しさん :04/07/07 10:45
> ファイルローカル(static)な配列の宣言だけ先にして、後から定義ってできないんですか できるにきまってるだろ ぼけ。 できなかったら こまるだろ ぼけ で、なんで「できない」なんてまぬけに思い込んでしまったのだ? 理由を言え理由を! ぼけ
13 :
デフォルトの名無しさん :04/07/07 10:46
で、32bitで足りない計算って、どんなことをやってるのか興味がある。
>>11 試してみれば?
extern int e;
static int s;
void foo(void){printf("%d, %d\n",e,s);}
extern int e = 123;
static int s = 456;
main(){foo(); return 0;}
随時意見募集。 第一群 「頭悪すぎ」「空白あけろ」「空白あけるな」「ぼけ」「ボケ」「池沼」 「バカ」「馬鹿」「ばか」「アホ」「あほ」 第二群 「函数」「scanf」「;-)」 「;)」
>>16 追加案。
第一群
「アフォ」「すぎー」
第三群
「初歩的な質問」「初心者です」
21 :
デフォルトの名無しさん :04/07/07 12:08
>
>>10 > 嘘つきめ。
どこがウソなんだか。
22 :
デフォルトの名無しさん :04/07/07 12:11
> C言語に名前空間なんてあるか? 概念としてではなく用語として。 基礎の基礎だろ! そんなこともしらんのか。
23 :
デフォルトの名無しさん :04/07/07 12:16
> 関数原型における仮引数名 この原型ってのが「プロトタイプ」のことだと気がつくまで1分20秒かかった...。 関数定義かなにかのことかと最初の45秒ぐらいは思ってた。
>>9 DWORD 32
WDWORD 64
QDWORD 128
>>21 long long が世のコンパイラに普く実装されているとでも思っているなら
おめでてーな。
26 :
デフォルトの名無しさん :04/07/07 13:23
先生に、CRTライブラリを使え、と言われたのですが、 家で使ってるパソコンは液晶テレビなので使えません。 どうやったら使えるようになりますか? ていうか、何で貧乏人に合わせないといけないのですか?
パソコンがテレビなのかよ!
28 :
デフォルトの名無しさん :04/07/07 13:29
ポインタのポインタとはどういった場面で効果を発揮しますか?
29 :
デフォルトの名無しさん :04/07/07 13:31
char *get_ptr() を void get_ptr(char **p) に書き換えるとか。
モニタをテレビというヤツ ハードディスクをハードというヤツ
32 :
デフォルトの名無しさん :04/07/07 13:32
>>18 削っておいた。
まあ、プログラムを一箇所プログラムーに変えただけであっという間に元に戻されるくらいだから、すぐに元に戻るだろうけど。
>>31 ハードディスクをシーというオッサンも知ってる。
>>32 項目の番号が、1. 2. 3. 5. になってたから、直しておいたよ。
ハードディスクは一応ハードだろ
僕のハードディスクはソフトウェアです。
>>28 const char *m[]={"ばか","あほ","まぬけ",NULL};
char **p;
for(p=m;*p;p++) {
puts(*p);
}
39 :
デフォルトの名無しさん :04/07/07 13:41
40 :
デフォルトの名無しさん :04/07/07 13:52
ポインタのポインタの使いかたはなんとなく理解できましたが 実際のところ38でうたれたプログラムもそうですが私の中では あまり意識して使うほど処理が早くなってくるとは思えないのですが どうでしょうか?
41 :
デフォルトの名無しさん :04/07/07 13:53
suy.50のスクリプトを使ってWWR"02"を利用するのは可能なことですか? それとも素直にoslでやるのが確実ですか?
君は処理を速くするためにポインタを使うのかね
>>40 速さ以前に文字列配列を実装するのには
ポインタのポインタ(配列でもいいけど)以外やりようがないんだけど。
>>40 38のプログラムのすばらしさが
わかるまでグランド走ってこい。
45 :
デフォルトの名無しさん :04/07/07 14:12
>>42 データを参照したりするときなどにポインタを使えば アドレスをインクリメントしたりしてデータを参照or変更できるので便利? ポインタを使う利点はこんな感じだと考えていますがポインタのポインタ を使ったことへの利点は・・・。 文字列配列を実装するのにポインタのポインタというのは38でうたれている プログラムでわかりますがポインタのポインタを使って他に何か役立たせる プログラムはありますでしょうか?
46 :
デフォルトの名無しさん :04/07/07 14:18
suy.50のスクリプトを使ってWWR"02"を利用するのは可能なことですか? それとも素直にoslでやるのが確実ですか?
>>45 int N=10
int M=50
int** array;
array=malloc(sizeof(int)*N);
for(int i=0;i<N;i++){
array[i]=malloc(sizeof(int)*M);
}
こんな感じで動的に多次元配列を作るのに使ったり
>>18 Cにも当然名前空間の概念はあるし、用語としても用いられる。
使用例
>同じ識別子が異なる実体を指し示すのは、それらが異なる有効範囲を持つときか、
>又は異なる名前空間に属する時かのいずれかとする。
>(JIS X3010 「6.2.1 識別子の有効範囲」より引用)
>>32 2ちゃんねる感覚で他サイトを書き換えるな。大勢の人が迷惑する、すぐ直しとけ。
>>45 ポインタが有用だと思ってるなら、ポインタのポインタだって同じ有用さだよ。
指してる先がポインタだってだけで、普通のポインタと働きは同じだし。
50 :
デフォルトの名無しさん :04/07/07 14:26
>>48 2ちゃんねる感覚で書き換えたわけじゃないんだけど。
直すことなんて誰でもできるんだから、自分でやれば?
suy.50のスクリプトを使ってWWR"02"を利用するのは可能なことですか? それとも素直にoslでやるのが確実ですか?
suy.50のスクリプトを使ってWWR"02"を利用するのは可能なことですか? それとも素直にoslでやるのが確実ですか?
osieroya
kiitorunkaomaera hayakuosiEROya
>>54 >それ用語としてって言うより無説明なまま普通の日本語として使われてるような。
その通りだと思う。
>Cの機能?として名前空間って定義されてる?
漏れの知る限りでは、されて無い。
Cの仕様書の中に(Cに限らないが)一般名詞として使われる用語だから
事典に載せる意味があるんじゃない。
C++のように機能としてのnamespaceと概念としてのnamespaceが別に
ある言語があるから話がややこしくなる。
名前空間が定義されてないって言うのは、 用語の意味が定義されてないって言うこと。 どの種類の識別子が異なる名前空間に属するかは、 規格で定義されている。
ANSI C言語辞典という本にはそれっぽい説明があるのだけど、 ANSIやJISでは定義されてないのかな? > 名前空間
そもそもname spaceってどっから来た用語なんだろう
おしえてください。 #include <stdio.h> void input(char *buf) { printf("名前を入れてください\n"); scanf("%s",buf); } void output(char *buf) { printf("私の名前は %s です。\n",buf); } int main() { char buf[8+1]; input(buf); output(buf); return 0; } ソースがあるんだけど、char *bufをなぜ使っているかがわかりません。 ポインタを使っているてことはわかるんだけど・・・なんかポインタ・・ だめぽ
62 :
デフォルトの名無しさん :04/07/07 16:06
>>61 その場合は、
char buf[]
でも構わないけど。
またscanfか!! しかもバッファオーバーフロー
最悪だ
お前ら釣られ杉ですよ
input(buf); てのは input(&buf[0]); っていうのを省略したようなもの。 だから関数 void output(char *buf) { } では、ポインタを受け取とる。
>>61 とりあえず
char name[8+1];
の変数は
void input(char *buf);
のbufに渡せるってことで納得して先進んどけ。
inputに名前の配列のアドレスを渡して書き込んでもらってると。
printf("名前を入れてください\n"); printf("名前が英数8文字以上の人は帰ってください。\n"); scanf("%s",buf);
ありあとやした〜〜助かります。 英数8文字じゃなく、2バイト文字で表現しろつう、問題でしたので・・・ 変なかきかたしてごめんなさい・・・。
初歩的な質問ですが・・・ dllを作成中なんですけど、文字列の出力方法がよく分かりません。 printf("あああ\n"); このprintfの中の内容を出力するにはどうすればいいのでしょうか? 構造体を使って作成しているんですけど、 構造体へprintfの出力内容の結果を返してくれる方法教えてください。 分かる方、よろしくお願いします。
>>61 これで万事OKさ
#include <stdio.h>
#include <stdlib.h>
char buf[8+1];
void input(void)
{
printf("名前を入れてください\n");
scanf("%s",buf);
return;
}
void output(void)
{
printf("私の名前は %s です。\n",buf);
exit(0);
}
void main()
{
input();
output();
return;
}
>>72 printfの出力内容を格納したいんです。
>>70 stdinを無理やりトラップすりゃいいのかも。
でもまっとうなやり方とは思えないな。
dllをビルドするときに
#define printf my_printf
とかやって自作の関数に飛んでくるようにすればいいんじゃないの。
標準のCにDLLは考慮されていたっけ?
DLLとは関係ないだろ。
>>77 あの質問内容だとDLLは関係無いだろ。DLLで使ってるってだけで。
printfは標準の範囲だと思うが?
81 :
デフォルトの名無しさん :04/07/07 17:12
sprintf使えば言いだけの悪寒。
しかしsprintfは文字配列へ出力する関数であって構造体へは出力できない
Microsoft 固有の仕様 →
ど れ を 使 っ た ん だ !
← Microsoft 固有の仕様
main()関数をmain.cというソースファイルに書き、 とある数をx乗してmain()関数に返すプログラムをsubmain.cに書くとします。 main.cとsubmain.cという二つのソースファイルをgccでコンパイルするとき gcc -c main.c gcc -c submain.c gcc main.o submain.o -o result.exe とすれば./result.exeで実行できるはずですが、-lmをコンパイル時につけていないためエラーが出ます。 submain.cではpow()を使うためmath.hをインクルードしています。 この場合、コンパイル時のどこで-lmをつければよろしいでしょうか?
最後のリンク時だろ
Cにはstring型がないですね?
typedef char string[256];
3通り試せば判ることを何故聞くのだろう・・・
>>89 C++ならstd::stringがあるけどCにはない。
文字列はヌル終端のchar/wchar_tの配列やポインタで使う。
typedef struct { char s[16]; } string4; typedef struct { char s[256]; } string8; typedef struct { char s[1024]; } string10;
どうあがいても文字列に加算・比較・代入なんかの演算子を適用できるようにはならない。
98 :
デフォルトの名無しさん :04/07/07 18:30
>>89 ない。char配列をそのまま使うしかない。
なんちゃって文字列型を作っても空しいだけ。やめとけ。
しかしC++で、string型のぬるま湯にどっぷり 浸かってて、Cに戻ると、かなり難儀するんだろうな・・・
C++で書いて遅い時とか、部分的にCで書き直すことはあるな。 速度に影響しない部分ならstring型とか
102 :
デフォルトの名無しさん :04/07/07 20:00
>>40 よしよし、それでいい
どっかのぼけみたいに誰かが言うから盲信とかすんなよ
A社のコンパイラで得た知見がB社のコンパイラで通用するかどうか確認もせずに思
いこむな
まず速くなったか、小さくなったか、ちゃんと実測しろ
次になぜ速(遅)くなったか、なぜ小さく(大きく)なったか、しっかり比較考察し
ろ
そのためにはアセンブラ(つーかCPUのマニュアル)も読めにゃならん
たとえ1nsでも1byteでも価値の有無は要求が定義されるまで結論するな
それまで速度が要求に満たないときの選択肢と分析力を蓄積しろ
この業界(特にこーゆーとこ)はそこいら中、
反面教師だらけだが(勝機がまだあるってこったな)
少なくとも自分は科学者であれ
103 :
デフォルトの名無しさん :04/07/07 20:02
科学者だったらコンパイラ作るよな普通。
それにしては科学者の数とコンパイラの数がずいぶんと違うようだがw
科学者の全員がコンパイラを公開してるとは思えんがw
公開してないのに、コンパイラ作ってるって良く分かるよなw
CとC++で同じプログラムで違う結果が出る プログラムを教えてください。
printf("%d\n",sizeof('A'));
109 :
デフォルトの名無しさん :04/07/07 21:48
perrorとstderrの使いかたがよくわからないのですが理解するのになにかいい 例やホームページはないでしょうか? 使用例としては fprintf(stderr,"ERRMESSAGE\n");や perror("socket");があるのですが、、、
int a; void *p = &a; int *p2 = p; // err@c++
>>107 ただの拡張子をc/cppそれぞれ試してみろ。
但しC99対応だと可変長配列の扱いでできるはず。でも構造体のメンバにはできないなどの制限つき。
const int N = 256;
char Buf[N];
すいませんおしえてください。NECのC言語教育プログラムなんですが、 int a=10; void test(int a); と void test(int a); int a=10; では、testの中でaをprintfすると結果が異なりますよね。 これがあるので「変数は先に書きなさい」ということなのでしょうか? 回答例が見れないので先に進めません。
>>107 #include <windows.h>
const int WINAPI WinMain(
const HINSTANCE hInst, const HINSTANCE hPrevInst,
const LPCSTR lpszCmdLine, const int nCmdShow)
{
return 0;
}
int main() { printf("%p", main); }
__cplusplus使ったら一発か
117 :
デフォルトの名無しさん :04/07/07 22:46
>>112 void test(int a)
{
printf("%d", ::a); /* これじゃ、エラーだよな・・・ C++ だし・・・ */
}
int a = 10;
void sine(int a)
{
printf("%d", a); /* これ、絶対グローバルには逝かないし */
}
mein()
{
extern int a;
test(a); /* 定義位置かんけーねーし */
}
void dqn()
{
int a;
test(a); /* ぜってーグローバルちゃうし */
}
>>113 >>117 すいません勘違いしてました。
1ページで問題終わりかと思ったら2ページにまたがってました。
回答例もありました。先にすすみます。
119 :
デフォルトの名無しさん :04/07/07 23:06
>>119 このスレの109にも書いただろ
マルチ氏ね
122 :
デフォルトの名無しさん :04/07/07 23:55
iアプリのNS−TOWERをC言語で作りたいのですが、プログラムどうすればいいですか?
>>122 エディタで入力してコンパイルすればいいのです。
これ以上はご自分でお調べ下さい。
>>12 static int s[];
// ここらへんで s を使う
static int s[] = {123,456,0};
こんなソースが書きたかったのですが、
gcc> :1: error: array size missing in `s'
msvc> (1) : error C2133: 's' : unknown size
とエラーになってしまいます。
gcc は -pedantic つけなければ通ったので、拡張されてるっぽいです。
>>15 そのソースを試させてもらった所、ちゃんと宣言と定義が別々にできているようでした。
でもやっぱり(サイズ指定無しの)配列にしようとするとエラーになってしまいます。
>>122 あなたが作っても、
それは NS-TOWER ではありませんよ?
>>124 その場合配列の宣言は、サイズ指定が必要。
static int s[3];
// ここらへんで s を使う
static int s[] = {123,456,0};
なら通るはず。
127 :
デフォルトの名無しさん :04/07/08 01:34
> long long が世のコンパイラに普く実装されているとでも思っているなら っていうかふつう使えるだろ。 おまえのは使えない? そりゃにせもののCコンパイラーだな
普くにふつうで反論か アホばっか
129 :
デフォルトの名無しさん :04/07/08 01:37
> そもそもname spaceってどっから来た用語なんだろう むかーしからある
130 :
デフォルトの名無しさん :04/07/08 01:46
やーいにせもの > 128
煮物は火をとめたとき、ぐぐっと旨みが染み込むもんじゃよ。
>>127 lsic-80 は long long 使えないぞ。
でも、にせものじゃないぞ。
133 :
デフォルトの名無しさん :04/07/08 09:29
あきらかなにせものです > lsi-c
134 :
デフォルトの名無しさん :04/07/08 09:30
失礼なヤツだな
135 :
デフォルトの名無しさん :04/07/08 09:34
っていうか常識 > lsi-cはにせもの
すみません。以下のプログラムをコンパイルして実行すると text.txtの内容を出力した後に変なオバケが出力されるんです・・・ どうしてなんでしょうか・・・・ int main(){ FILE *fp; int c; int d; char str[256]; fp = fopen(text.txt,"r"); if(fp == NULL){ printf("だめでした"); exit(-1); } while(!feof(fp)){ c = fgetc(fp); str[d] = c; d++; } fclose(fp); str[d] = '\0'; printf(str); }
dを初期化 printf("%s", str)
>>137 fp = fopen(text.txt,"r");ってなんだよおい。
とりあえずfp = fopen("text.txt","r");と読み替えておくぞ。
>>138 を補足すると、text.txtの中に出力指定子があると
printfはそれを解釈してしまうってことだ。
今回はただの習作みたいだからprintf("%s", str)でもいいけど、
パフォーマンスが必要な場面ではputsのほうがいい。
それと本質的ではないが、text.txtのサイズが255バイトを超えると
確保していないメモリを破壊してしまうので危険だ。
switch文で例えば、 switch(a){ case 1 :------- case 2 :------- case n :------- } のような物を作ったとき、nの限界ってありますか?
141 :
デフォルトの名無しさん :04/07/08 10:33
>>139 putsじゃ改行してしまうからfputs
142 :
デフォルトの名無しさん :04/07/08 10:34
>>138 即答アリです・・
書き間違えてました・・・
d=0;
printf("%s",str);
でコンパイルできたんですけど、実行すると
text.txtの内容出力語、改行が入って1文字変なオバケ文字が出るんです・・・
144 :
デフォルトの名無しさん :04/07/08 10:38
どうしてみんなfeofを使いたがるんだろうね。
>>143 while((c=fgetc(fp)!=EOF){
str[d] = c;
d++;
}
>>144 お化け出ませんでした!!!
なんでなんですか??
146 :
デフォルトの名無しさん :04/07/08 10:50
>>140 Cの仕様では256通りまでは保証されている。
>>138 ププフ
解らないなら黙ってろよププ
>>137 ,
>>145 おまいは fgetc を一回余分に呼び出してるんだよボ○ケ
printf("%c", EOF);
ってやってみな、同じオバケ文字出るから。
↑書込みは一回にまとめてほすぃ。 リソースを無駄に消費する人はCに向かないのでは;-;
151 :
デフォルトの名無しさん :04/07/08 11:12
150は何を勘違いしているんだろう。
152 :
超初心者(ボ○ケ) :04/07/08 12:12
ヤバイです。まだわかりません・・・・ 144さんのfgetcを使った方法がOKなのは理解できるのですが feof()の戻り値はEOFであれば0以外の値、そうでなければ0ですよね・・ !feof()なんでEOFがあったら0以外の値じゃない値がwhileで判断され ループを抜けるはずなのに・・・ なのに抜けないで一回EOFを代入してからループを抜けるんですよね; ・・・・・・なんでだろう・・・
153 :
デフォルトの名無しさん :04/07/08 12:17
>>152 この場合、feof()が真を返すのは、
fgetc()がEOFを返した後だ。
初心者を自称する奴って理解できないレスを無視して 質問を繰り返す傾向にあるな。
ちょうしにのるなよ
156 = 152
158 :
超初心者(ボ○ケ) :04/07/08 12:52
>>153 いえ・・何回も読んだんですけどね・・・
>>154 そうか!!!!なるほど!!わかりました!!!
ポインターをインクリメントするのはfgetc()ですよね;;
ありがとうございます(TT
>>155 いえ、読んだんですよ〜
>>156 スミマセン・・
>>157 ちがうよお〜〜
>>158 >ポインターをインクリメントするのはfgetc()ですよね
しない。
# ファイルポジションの更新はされるだろうが…
160 :
超初心者(ボ○ケ) :04/07/08 13:18
161 :
超初心者(ボ○ケ) :04/07/08 13:24
あ〜やっとわかった気がします・・・ fgetc()がEOFを吐き出して代入しちゃった後に while判定でループを抜けるってことですね。 勘違いしてました。ファイルの最後にはEOFが必ずあるもんだと思ってたんですよ。 なんかの関数がEOFを吐き出さないとEOFはないんですよね・・・ 大変お騒がせしました。 みんな・・・ありがと〜〜〜〜♪
163 :
超初心者(ボ○ケ) :04/07/08 13:28
164 :
デフォルトの名無しさん :04/07/08 13:32
これで中級者の仲間入りだな。
a[10]という配列があり、a[0]からa[9]にrand()を使って乱数をいれていきます。 もちろんsrand()を使って配列の識別子が違えば異なる値が入るようにします。 ここでsrand()を使ってもたまたまa[0]とa[7]の値が同じになってしまうことってあるのでしょうか? それともそのプログラム中はsrand()を使えば、一度使った乱数は二度と使わないようになっているのでしょうか? 同じになってしまう可能性があるのならrand()を使うたびに以前に代入した配列の値をチェックして同じ値にならないようにしないといけないのでしょうか? アドバイスお願いいたします。
重複する可能性は常にある。 それが嫌ならs[0]..s[9]に0..9をセットしてから ランダムにシャッフルしとけ。
168 :
デフォルトの名無しさん :04/07/08 16:59
初歩的な質問なのですがご教授願います。 int型の値をchar配列に格納したいのです。 アドバイスお願いいたします。
>>168 入れてみれば
union{
int n;
char c[2];
};
>>168 入れてみれば
char c[4];
int i;
i=1234;
*(int*)c=i;
圧縮すればいいんじゃない
>>167 a[?] にはいる値が 0..9 とはどこにも書いていないぞ
>>168 -128から127の範囲なら、そのまま代入していい
>>174 配列にいれるっていってるんじゃねの?
char c[sizeof(int)];
int i;
*(int *)c = i;
おまえら非道いなw char b[10]; int n = 12345; sprintf(b, "%d", n);
>>174 そのまま代入したらコンパイラに怒られるよ
178 :
デフォルトの名無しさん :04/07/08 17:30
179 :
デフォルトの名無しさん :04/07/08 17:44
randとsrand関数についてなんですが、 srand関数にこちらが指定した値を使用して初期化して rand関数で乱数を得るプログラムをVSでexeを作成した場合、 OS、PCその他問わず全部同じ乱数が出てくるものなのでしょうか? よろしくお願いします。
>>179 保証はないけど実質同じ。
DLLの実装変われば怪しいけどまずないだろうね。
でも変わらないことに依存したコードは書くべきじゃないと思うよ。
どうしてもというなら自前の生成ルーチンを作ってstaticリンクするとか。
#include <stdio.h> int main(void) { int i; while(1){ printf("0か1を入力して下さい: "); scanf("%d",&i); if(i==0 || i==1) break; else printf("入力が違います。\n"); } return 0; } 0か1の入力を求めるプログラムです。0か1を入力してもらうまで 無限ループするようにしています。エラーは数字を入力する分には、入力のやり直しができるのですが、 英字を入力すると入力を受け付けなくなって、print分が延々と出力されてしまうところです。 簡単に直せそうなのですが、私の頭では難しいです。こんなことで3日間悩んでます。 できたらどなたか正しく書き直して欲しいのです。
>>181 実質同じ?
DLL?
お前はいったい今まで何を学んできたんだ!?
>>179 どこでも同じ値が欲しければ自分でsrand/rand相当の関数を作ったり、MTなんかをつかったりすれば。
scanf("%s",a); で何も入力せずエンターを押すと終了するようにしたいのですがどうしたらいいでしょうか?
>>182 応急処置でいいなら
rewind() を使うといい。
ちゃんとやるなら
scanf は使うべきではない。
ほらよ #define RAND_MAX 0x7fffffff //same stdlib.h static u32 rnd_next; static int do_rand(u32 *ctx) { return ((*ctx = *ctx * 1103515245 + 12345) % ((u32)RAND_MAX + 1)); } int rand() { return do_rand(&rnd_next); } void srand(u32 seed) { rnd_next = seed; }
>>182 scanf(1回目):英字が入力されると%dなんで無視。バッファに入力された英字が残る。
↓
whileでループ
↑↓
│scanf(2回目以降):先にバッファから読もうとする。しかし英字なら%dなんで無視。バッファに入力された英字が残る。
└┘
こうして無限ループの出来上がり。直すとこうかな。
int main(void)
{
int i;
char s[256], *endstr;
while(1){
printf("0か1を入力して下さい: ");
fgets(s, sizeof(s), stdin); //もしくはscanf("%256s", s)
i = (int)strtol(s, &endstr, 10);
if((i == 0 || i == 1) && *endstr == '\0')
break;
else
printf("入力が違います。\n");
}
return 0;
}
>>185 if (*a == '\0')
return;
誰か作ってくれ const char *getline(); /* 標準入力から一行読み取る。長さ無制限 */ void freeline(const char *p); /* getlineで取得したバッファを開放する */
warata
>>186 188
どうもありがとうございます!
こんなに早くレス頂けるなんてホント嬉しいです。
みんないい人ですね。
それでは、ありがたく使わせていただきますm(_ _)m
>>167 ,
>>173 レスありがとうございます。
確かに配列に入る値は固定ではなくランダムにしたいのです。
srand()では重複してしまう可能性があるとのことなのですが、
以前に代入した配列を全てチェックしていかなければならないのでしょうか?
もしそうなら配列が1000個とかあるとチェックするのがきついのですが...
>>193 藻妹は根本的に解ってないだろ。
srand が何なのか小一時間調べろ。
>>194 srand()に与える引数が毎回変わればいいってことですよね?
ってことはsrand()の引数にシステム時刻を指定すれば重複することは限りなく少なくなるってことですよね。
でも重複しない可能性は0ではない。100%重複させないようにするには以前の配列をチェックするしかない。
合格でしょうか?
( ゚д゚)ポカーン
>>190 const char *getline()
{
line *line;
char buf[256];
char *tmp;
int len;
line = malloc(1);
*line = 0;
len = 0;
while(fgets(buf, sizeof buf, stdin))
{
len += strlen(buf);
tmp = realloc(line, len);
if(tmp)
{
line = tmp;
strcat(line, buf);
}
else
{
free(line);
return 0; // メモリが足らない時はNULLを返す
}
}
return line;
}
インデントが全角になってるから、半角に置換しないとコンパイルできない
どうせならfgetline()キボンヌ
構造体配列 rank[i] で定義した文字列 rank[i].name を、 普通に定義した文字列 char name[MAX_LINE] に代入したいのですが(MAX_LINEは20です。) name = rank[i].name ; とするとコンパイルエラーがでます。 解決するにはどうしたらいいですか?
馬鹿かお前は。 Cでそんな文字列のコピーの仕方できるわけねぇだろ。 strcpy(name,&(rank[i].name))でも使え。
>>201 すいません、馬鹿でした・・・
回線で首吊ってきます
>>199 1. バッファを malloc して
2. 取り敢えず fgets して
3. 最後に改行コードが付いてたら {
4. バッファを realloc して
5. 続きを fgets して
6. }
つう感じ?
>>195 srand をどうやろうが、rand は重複する。
チェックするしかないことにはやく気がつけ。
その前に、どのくらいの範囲のランダム値なんだ?
それによっては、
>>167 をちょっと改良すれば
いけるんじゃねか?
RNDで1〜5までの整数値を20個作りたいんです!って感じだな
<<205 レスありがとうございます。 1000個くらい(もしくはそれ以上)のノードにIPアドレスのように32bitの整数値を一意に割り当てたいのです。 うまい方法ありますでしょうか?
赤黒木に重複チェックしながら登録
char a; scanf("%d",&a); if(a == '\0') return; とやってもうまく行きません。どうしたらいいでしょうか?
もちろんscanfのリファレンスを全部呼んだ上での質問だろうな?
scanf("%c",&a); だろぼけぇ。
char a; scanf("%c", &a); if (a == '\n') return;
184,187さん、その他の皆さん。 ありがとうございました。 ここで出た事を参考に作ってみます。 それではまたわからないことがあったら来ますので その時もよろしくお願いします。
scanfはそろそろ利ファンレスから削るべきだな。 ヘッダの中でプロトタイプを見つけた奴だけが使えるようにするべき。
ついでにprintfも。 なんか換わりになるもので、おんなじぐらい便利なのがあればな。 てか、何でいまだに標準にそういうのが組み込まれないんだ…
なんでprintfが出てくるの?
printf削ると不便だと思う…
218 :
デフォルトの名無しさん :04/07/08 22:03
scanf削ると不便だと思う・・・ 結局同じ (プゲラ
219 :
デフォルトの名無しさん :04/07/08 22:05
まぁ、fprintfでいいんじゃない?
|┃三 ________________ |┃ / |┃ ≡ _、_ < scanfと聞いちゃぁ黙っちゃいられねえ! ____.|ミ\___( <_,` ) _ \ |┃=___ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |┃ ≡ ) 人 \ ガラッ
printfはイイ女だろ、scanfのようなガバマンとは違うよ
scanfは別に無くても不便ってことはないだろう。 あって便利なときはあるけど。
224 :
デフォルトの名無しさん :04/07/08 22:19
∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)<
>>220 モナー
( ) \_____
| | |
(__)_)
>>214 変わりにgetch()を標準にして欲しい。まったく危険が無い。
文字列の入力とかコードが多くなるけど、
文字列の代入が出来ないCらしくていいと思う。
226 :
デフォルトの名無しさん :04/07/08 22:26
GUI も通信もセキュリティも10進演算も・・・
いまさら変更なんてできるわけないだろ。 お前らの脳みそをCに合わせろ。
228 :
デフォルトの名無しさん :04/07/08 22:29
∧ ∧___ ダッコ♪ /(*゚ー゚) /\ /| ̄∪∪ ̄|\/ | |/  ̄ ̄ ̄ ̄
%u30D1%u30B9%u30EF%u30FC%u30C9%u3092%u5165%u529B%u3057%u3066%u304F%u3060%u3055%u3044%u3002 %u30D1%u30B9%u30EF%u30FC%u30C9%u304C%u6B63%u3057%u304F%u3042%u308A%u307E%u305B%u3093%u3002
"godhand"ですが何か
231 :
デフォルトの名無しさん :04/07/09 02:35
レス数がずれているので修正カキコ
232 :
デフォルトの名無しさん :04/07/09 11:49
西暦を入力してその年にサッカーのワールドカップがあったかを表示するプログラムソッコウで作れますか? 12時までにはほしいです...
233 :
デフォルトの名無しさん :04/07/09 11:49
むりか。。。
簡単だろ
隣の生徒に聞け。勇気を持って話しかけろ。
236 :
デフォルトの名無しさん :04/07/09 11:57
pow関数なんですが これはXのn乗を求めることが出来る関数だと思うのですが このアルゴリズムを教えて頂けませんか?
>>232 ワールドカップが行われた年を全て配列に入れておき、
入力された値と比較。
238 :
デフォルトの名無しさん :04/07/09 12:00
いや、テスト中でこれが問題なんだ
#include <stdio.h> #include <conio.h> int main() { int year; printf("年:"); scanf("%d" , &year); if(year <= ワールドカップが始まった年 && year % 4 == 0) printf("その年にはワールドカップがあります"); else printf("その年にはワールドカップはありません"); getch(); return 0; }
241 :
デフォルトの名無しさん :04/07/09 12:03
239>> ありがたい! でも、なんかエラーでないっすか?
ネタはもういいよ
>>241 if(year <= ワールドカップが始まった年 && year % 4 == 0)
ここかえたか?
245 :
デフォルトの名無しさん :04/07/09 12:05
どうかえんだ?
246 :
デフォルトの名無しさん :04/07/09 12:06
ごめ・・・迷惑かけすぎ。。。
(・∀・)カエレ!!
#include <stdio.h> #include <conio.h> int main() { int year; printf("年:"); scanf("%d" , &year); if(year <= 1930 && year % 4 == 0 && year != 1942 && year != 1948) printf("その年にはワールドカップがあります"); else printf("その年にはワールドカップはありません"); getch(); return 0; }
それ間違ってる
#include <stdio.h> int main() { int year; printf("年:"); scanf("%d" , &year); printf("もうワールドカップはありません"); return 0; }
if(year >= 1930 && (year % 4) == 0 && year != 1942 && year != 1948)
v(^o^i)d
m(^a^i)n
v(^v^;)v
g(^e^t)s
nu(^ll^p)o
bash: syntax error near unexpected token `nu(^ll^p)'
zsh: number expected
ええっと、あの〜 DOSウィンドウから卒業できるのはいつでしょうか? もっとこう、windowsのウィンドウとか出てきたり、GUIのアプリケーションだったり、 画像を扱ったりしたいです、そろそろ。
>>262 勝手にSDKなりMFCなりつかって卒業してください。
qtハニー
文字列の全角と半角を判別する関数と、 文字列の中にスペースが含まれているか判別する関数ってありますか?
char *szStr = "This has three spaces."; if(strchr(szStr, ' ')) printf("True\n"); else printf("False\n");
>>262 オレも似たようなことを書いて
「お前には一生無理」
とレスもらったことがあるが、
今では普通にWindowsプログラミングしてる。
故に
「いつでしょうか?」
という質問にはこう答えておこう。
い つ か 。
while(*str){ if(iskanji(*str) && iskanji2(*(str+1))) { /* 漢字だ */ str+=2; } else if (isspace(*str)) { /* 空白だな */ str++; } else { /* その他 */ str++; } }
>>270 アフォなプログラムだな。
結局バイト数を数えてるだけか。
>>271 お前もアフォだな、中で好きにしろってこどじゃないのか?
↓以下放置でおながいします
C入門書クリアレベルでどの程度のプログラムが書けるようになってればいいでしょう?
分割コンパイルができる。 自作のライブラリをどんどん蓄積していける。 標準ライブラリにどんな機能があるかを把握している。 分からないことはリファレンス・ネットを使って解決できる。
>>274 それは基礎の基礎でしかない。アルゴリズムの本やプログラムの作り方を学べ
C入門書すらクリアむずそうだ
int a ; に scanf("%d" , &a); で数字を入力して整数以外を入れたらエラーがでる(小数点とか) ようにするのは入力の後に if( a % 1 != 0 ){ /* エラー文 */ } でいけますか? それとも自動的の小数以下は切り捨てられますか?
281 :
デフォルトの名無しさん :04/07/09 19:04
現在試せる環境じゃないからです・・。 スマソ
>>270 iskanji() て何さ?
このスレ的には mblen じゃないか?
>>280 >整数以外を入れたらエラーがでる(小数点とか)
>ようにするのは
ライブラリを書き換えて下さい。
つか、scanf 使うなって何万回言わすんじゃヴぉけ!
c言語で書かれたミニコンパイラのソースってどこかにありませんか?
>>280 char temp[2]; とでもして
if (scanf("%d%1[.]", &a, temp) != 1) {
printf("error\n");
}
とでもしたら。
ない
291 :
デフォルトの名無しさん :04/07/09 19:57
>>285 使うべき場目かどうかを見ろと言え
論理的な判断の手本を見せろ
scanfは使用不可。どんなときでも。
scanfは使用不可って、一般が使うような物に使うのなら同意だが。 テストとかに使うとか、使用者が限定されているなら別に使ってもいいと思うぞ。
gccがgetsと同様に警告出したらscanf死滅するのにな。
295 :
デフォルトの名無しさん :04/07/09 20:26
警告を出すのはgccじゃない
学校のプログラミングの授業では最初にprintfとscanfを教えてもらった気がする・・・
|┃三 ________________ |┃ / |┃ ≡ _、_ < scanfと聞いちゃぁ黙っちゃいられねえ! ____.|ミ\___( <_,` ) _ \ |┃=___ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |┃ ≡ ) 人 \ ガラッ
スキャンエフをNGワードに指定しますた。
ザンギエフをNGワードに指定しますた。
×スキャンエフ ◎スケァネフ
\ / ( ´∀`) ザンギエフへ げんきですか。いま溜めてます _ i_iヽ (゚д゚,,;;) うるさい死ね 溜めるな殺すぞ ______ \ / ( ´д`) ごめんね。ガイルはじめて溜めたから、ごめんね _ i_iヽ (゚Д゚;;;)うるさいくたばれ、溜めんな ______ \ / ( ´∀`) ソニック撃っておきました。ガードしてね 飛び込みはしますか? _ i_iヽ (#)Д`;;) 死ねくそガイル
入力した4桁の整数のそれぞれの桁の数を下からarrey[0]〜arrey[3]に 格納するにはどうすればよいでしょうか? ex)1234 arrey[0] = 1 arrey[1] = 2 arrey[2] = 3 arrey[3] = 4
>>303 1234 = 1000*1 + 100*2 + 10*3 + 1*4
>>303 上から格納しているようにも見える。
下からなら、10で割った余りを入れればいいんだがな。
for (i=0; moto>0; i++, moto/=10) {
// どうでもいいが、arrayでは?
arrey[i] = moto%10;
}
すいません、単純に勘違いしてました。 ×arrey ○array ですねorz それと例も逆になってます・・・鬱
ザンギュラ
scanf
312 :
デフォルトの名無しさん :04/07/09 23:40
VCでCUIのプログラムを作ったのですが、 Windows(XP/200/98等)内のDOSプロンプトでは動作するのに、 Windows98の起動ディスクで起動したDOSプロンプト内では動作しません。 Win32APIは使っていません。 調べた範囲ではSTUBが動作してしまっているようなのですが、 どうすればこの場合STUBではなく通常動作させられるのでしょうか?
>>312 特定のコンパイラの話題ならよそでやってくれ
LSI−Cで作るとか。
315 :
デフォルトの名無しさん :04/07/09 23:48
甘えるな。
317 :
デフォルトの名無しさん :04/07/09 23:56
>>316 甘えじゃない、挙証責任だ
言いがかりでないことを自ら示せ
>>312 本当にWin32APIを使ってないなら
スタブ内でプロテクトモードにして
設定した上でジャムプしる
>>317 中途半端な煽りを繰り返す暇があったら自分で探せよ池沼。
1 名前: v(^o^i)d 投稿日: 04/07/07 02:52
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
コンパイラを探しているなら
>>2-13 を。
上記を逸した場合の結果は激しく未定義だYO!
320 :
デフォルトの名無しさん :04/07/10 00:01
VCは標準なんだからいいんだよ。gccなんかと一緒にしてもらいたくないな。
322 :
デフォルトの名無しさん :04/07/10 00:05
325 :
デフォルトの名無しさん :04/07/10 00:10
学校でプログラミングの授業が始まったのですが 最初のほうで早くもつまづいてます・・・ while文を用いて「nippon」という文字列を10行表示汁! って問題なんですが #include<stdio.h> void main() { int a=0; while(a>=10){ printf("#nippon\n"); a++; } } これじゃだめなんでそか?出てこないんですけど・・・。 CPad for LSI C-86とかいうのを使ってます。
〜の間(aが10以上)
>>325 while文は、条件式が 成 立 し て い る 間 繰り返します。
a>=10 という条件とaの値を考えてみましょう。
328 :
デフォルトの名無しさん :04/07/10 00:12
>>324 レモン、ピーマン、キウイ等に多く含まれる栄養素
329 :
デフォルトの名無しさん :04/07/10 00:38
#define until(a) while(!(a))
質問でっす!!! 循環リストの長所と短所と、どのようなアプリケーションに 循環リストは向いているかを教えて〜〜
どっかでみたな
332 :
デフォルトの名無しさん :04/07/10 01:13
昔このスレで、端のあるリストネタでvoid信者が暴れたことがあったね。
そんなコトがあったんや〜 というか、C言語を授業でしてるんだけど、先輩が言うには 卒業するころには社会で十分やっていけるくらいの力はつく って言われたんだけど、今まだこんな単純な質問をしてて大 丈夫なのかな俺・・・藁 ちなみに今2年
334 :
デフォルトの名無しさん :04/07/10 01:21
335 :
デフォルトの名無しさん :04/07/10 01:36
>GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目) そのスレって何処の事なのでしょうか?どなたか教えていただけませんでしょうか。
俺ら公立の情報系の大学なんだけど、 その先輩の就職先自体はわからない。でも俺らの学科は 結構いいとこに就職が決まってるらしいよ。大学院とか行か なくてもいい感じみたい。
循環リストは先頭を任意に変更できる配列という側面を持つ undo情報の保持に向く
338 :
デフォルトの名無しさん :04/07/10 01:39
会社員になるやつはバカ
>>338 >あらゆる質問はまずすれ立てるまでもない質問はここでスレにしてください。
>>337 ありがと!!参考にさせていただきます。
循環リストの短所とかはありますか?
>>339 それでも俺は会社員になるだろな〜
なんだかんだ言っても、やっぱ安定した収入は欲しいしね
342 :
デフォルトの名無しさん :04/07/10 01:50
>>336 腐っても工学者なら何事に対しても基本的な態度を忘れるな
もう一度聞く、その先輩は (ry
>>337 undoって循環である必要ないって言うか終端が分からないと駄目なような。
短所は可変長でないこと。 一周したら前の情報が強制的に上書きされる。
>>343 おそらくキリングバッファのことだと思われ
2進法も出来ない文系崩れの失職者。あるのはパソと時間だけ。 で、C言語を習得したいと思い立ったんだけど、どのくらいでプログラム書けるようになるだろうか?
unkoが口に回ってこないように気をつけよう
>>343-345 347
ありがと〜かなり参考になります
いろいろ勉強させていただきます
350 :
デフォルトの名無しさん :04/07/10 02:05
>>346 明日にでも書いてやる! くらいの勢いがないと第2スキューズ数年かかっても無理。
なんか混乱してきたような
struct item{
struct item *next;
};
でnextを辿ってくと最初に戻るデータ構造の話をしてるんだよね。
>>344 可変長じゃないの?項目なんていくらでも追加していけると思うけど。
>>345 キリングバッファって循環リストで実装されての?
>>346 とりあえず2000時間くらい
そのあとどうするか自分で判断したら?
>>351 もっと詳しく君の考えている循環リストの定義を知る必要があるが
とりあえず
> nextを辿ってくと最初に戻るデータ構造
だからリストの追加は付加だ。サイズは一定になる。
> キリングバッファって循環リストで実装されての?
されてる
354 :
デフォルトの名無しさん :04/07/10 02:09
マルチプロセスとグローバル変数についての質問です。 1.親プロセスにてグローバル変数 FILE* fp を アペンドで開く 2.子プロにて必要なときにfpに書き出し、fflush()する 子プロの数は不定。 これは作りとしては正しいのでしょうか? 試しに作って動かした感じでは問題ないのですが、 負荷が高くなったとき(多プロセスで一斉に出力したとき)はどうなるのでしょうか? あと、更に基本的な質問。 このケースって*fpがいくつも複製されているという認識でいいでしょうか? (同じファイルを示すアドレスがいくつもできている)
>>346 書けるようになってどうするの?
会社はC言語ができるだけの人なんていらないよ?
>>354 君はスレッドプログラミングについての書籍を読みなさい
>>353 >だからリストの追加は付加だ。サイズは一定になる。
item *new = malloc(sizeof(item));
new->next = curr->next;
curr->next = new;
はリスト(項目)の追加といわないの?
これと同じ意味で削除もできるよね。
>されてる
了解。
キリングバッファは循環リストで実装され
キリングバッファはundoとは別物ってことだね。
>>356 マルチスレッドだと、全メモリが1空間で共有ということだよね。
対比してマルチプロセスのグローバル変数ではどういうことなのだろうかと。
別プロセスでそれぞれがグローバル変数のコピー(というかメモリ)を持っても、
問題なくfflush()できているのが不思議なもんで。
マルチプロセスではそのへんは安全としか書いてないから質問しますた。
>>357 だから最後のセルが最初のセルを指すのが循環リストな訳で。
・・・別にいいけどね、間にいくらでも任意のセルを挿れたりしても・・・
いや、CAD入力を個人で下請けしてたんだけど、取引先に合わせた市販のCADソフトもフリーソフトもカスタマイズすれば効率がよくなる部分がたくさんあった。 具体的にはC言語を覚えて特定企業の書式に特化したCAD開発をしたい。
>>358 ちょっとそのへんの説明を軽くC言語で書いてみて
手元のアルゴリズム本をいくつか見てみたけど、巡回リストの特徴が 固定長なんて書いてあるのはなかったね。
循環リストは挿入や削除も可能 ただし値のpush・popをする主体とサイズの変更をする主体が同一だと 循環リストの利点は生きてこないんじゃないかな
>>360 プログラマ板に行くといい。あちらでも無視されるかもしれないが。
365 :
デフォルトの名無しさん :04/07/10 02:44
>>361 unix/cなのでマルチプロセスですが。
今、ソラで書いたのでマクロ名や微妙な間違いはご愛敬ということで。
#include <stdio.h>
略
FILE* fp ;
int iChild ;
int iFlg = 0 ;
main(){
int pid ;
fp = fopen(...,"a");
signal(SIGCHLD,childend); signal(SIGTERM,mainend);
while( iFlg==0 ){
sleep(1); pid = fork();
switch(pid){
-1 :
break ;
0 :
hoge() ;
exit(0);
default :
iChild++ ;
break ;
}
}
while( iChild > 0 ){ ; }
fclose(fp);
}
366 :
デフォルトの名無しさん :04/07/10 02:45
続き。 hoge(){ int i ; for( i=0;i<5;i++ ){ sleep(i); fileflush(); } } childend( int i ){ int pid = waitpid(); iChild-- ; signel(SIGCHLD,childend); } mainend(){ iFlg = 1 ; signal(SIGTERM,mainend); } fileflush(){ fprintf(fp,"hoge(%d)",getpid()); fflush(fp); }
iFlg はどこでリセットされるの?
368 :
デフォルトの名無しさん :04/07/10 03:09
>>367 直接質問と関係ないと思うけど、mainend()のつもり
369 :
デフォルトの名無しさん :04/07/10 03:14
strstr("abc", "") で第1引数と同じアドレスが返るのは合理的ですか? strchr("abc", '\0') で「c」の次のアドレスが返るのって合理的ですか? どうもなっとくいかないのですがー
>>367 え? iFlg = 1 して子プロセス作ってそのまま放置じゃん。
while にどうやって入るの?
372 :
デフォルトの名無しさん :04/07/10 03:18
iChildにはvolatileをつけろ
373 :
デフォルトの名無しさん :04/07/10 03:20
いずれにせよ、環境依存なので他のスレでどうぞ。
そだね。iChildは初期化漏れ。 つか、そのへんの話じゃなくて、 マルチプロセス時のグローバル変数fpの話なのだが。 環境依存ってこの話題じゃないよね? 普通のunix/cも不可か?ここは
375 :
デフォルトの名無しさん :04/07/10 03:26
while( iChild > 0 ){ ; } こんなことをするならvolatileをつけろという意味なんだけど。
fp は使い回しだよ。各プロセスが同じ fp にアクセスしてる ただ同時に fp にアクセスしないようにする必要があって iFlg で進入するプロセスを制限していると思うのだが 肝心の iFlg = 0 にする決まりがない
377 :
デフォルトの名無しさん :04/07/10 03:33
>>374 普通とか言われても、ANSI-Cにはforkなんて関数は無かったと思うが。
ちなみに、forkしても親プロセスでオープンされたファイルは引き継がれる
(ので、POSIXな部分では安全?ANSI部分は知らんけど)
マルチスレッドに関する規定が標準Cにない以上、如何に一般的であったとしてもマルチスレッドはスレ違い。
379 :
デフォルトの名無しさん :04/07/10 10:52
>>369 strchrの実引数に、意味が処理系定義となっている部分があるので、何とも言いようがない。
>>358 の質問の意味が話からないorz
OSって偉いな、ってだけではダメなの?
指定したフォントと大きさ(MSPゴシック、12など)でプロンプトに文字列を出したい。 やり方教えてください。
DOS窓の設定変えろ
コマンドプロンプトなんかのコンソールはそういう性格のものじゃないしな。
384 :
デフォルトの名無しさん :04/07/10 13:16
>>374 やっと意味あるレスだよ。サンクス。
fpの実データは同じで、ポインタはそれぞれ。
なのでfflushした時点で書き込み部分は更新される、
と解釈すればいいような気がしてきた。
このへんは、子プロ&親プロでfpとfpの中身を出力してみればわかりそうだ。
・・・と、やっと気づきました。
ところで、標準C=ANSIという規定なのか?この板は?
確かにforkはANSIにはないけど、
unixの伝統的なシステムコールなのでアリだと思うのだが。
WinAPIならさすがに質問しないが。
ANSI99はどうするんだ?
しかし、
>>378 はマルチプロセス=マルチスレッドなのか?(w
あとシグナルや
>>375 みたいなツッコミはうぜぇ。
ソラで書いたので細かいことはご愛敬だと書いてる。
実際にはきちんと書くに決まってるだろうが。
iFlgはシグナルで処理。
以上
1971 C 1978 K&R 1/e (1983 C++) 1989 ANSI C (C89) <--- K&R 2/e 1996 ISO C (C95) 1999 ISO C (C99)
1971 C 1978 K&R 1/e (1983 C++) 1989 ANSI C (C89) <--- K&R 2/e 1990 ISO C (C90) 1996 ISO C (C95) 1999 ISO C (C99)
>>384 「unixの伝統的な…」
~~~~~~
環境依存以外の何だとおっしゃるのでしょうか。
CはUNIX専用言語だということを知らないアフォがいるようだな。 確かに他の環境に移植はされたがそれは異端だよ。
>>384 >fpの実データは同じで、ポインタはそれぞれ。
…
グローバル変数だろうがへったくれだろうが
別プロセス空間で動いている限り別物。
fork した時点でのコピーでしかない。
っつー話は環境依存だと思うが。
>unixの伝統的なシステムコールなのでアリだと思うのだが。
伝統的も糞もない。
>>384 >マルチプロセス=マルチスレッドなのか?(w
>マルチスレッドはスレ違い。
況やマルチプロセスをや。
標準C=ANSIと言う気は(私は)ないが、ごく一部のOSに限定されても困ると言うだけ。
unixのシステムコールはありでWinAPIはなし? めでてぇな。
unix C は環境依存にはなりませんよ そのために C が開発されたんだし 例外処理
元々unix向けに作られた言語であろうと、 現在そうであるかは別だと思うが
>>390 >標準C=ANSIと言う気は(私は)ないが、ごく一部のOSに限定されても困ると言うだけ。
>unixのシステムコールはありでWinAPIはなし? めでてぇな。
あのソースは しすごでもBSDでもLinuxでも移植が容易。
当たり前だ。長い期間かけて標準化された。あるいはデファクトスタンダードとなったんだから。
お前は馬鹿か?WinAPIはWinでしか通用しないだろうが。
お前は馬鹿か?UNIXシステムコールはUnixでしか通用しないだろうが。
fork すると何が
(゜д゜)ウマー!なの?
397 :
デフォルトの名無しさん :04/07/10 14:00
#include<stdio.h> void main() { int a; while(1){ printf("数字入力(0〜100):"); scanf("%d",&a); if( a <= 100 && 80 <= a ) printf("Best!!\n"); break; if( a < 80 && 65 <= a ) printf("Better!!\n"); break; if( a < 65 && 50 <= a ) printf("Good!\n"); break; if( a < 50 && 0 <= a ) printf("Bad!\n"); break; else printf("入力エラー\n"); } } 自分馬鹿です エラーが出ます(else 文が if と一致しません。) ダレカタスケテ
またscanfか
>>397 #include<stdio.h>
void main()
{
int a;
while(1){
printf("数字入力(0〜100):");
scanf("%d",&a);
if( a <= 100 && 80 <= a ){
printf("Best!!\n");
break;
}
if( a < 80 && 65 <= a ){
printf("Better!!\n");
break;
}
if( a < 65 && 50 <= a ){
printf("Good!\n");
break;
}
if( a < 50 && 0 <= a ){
printf("Bad!\n");
break;
}
else
printf("入力エラー\n");
}
}
403 :
デフォルトの名無しさん :04/07/10 14:11
>>394 UNIXをひとくくりにする馬鹿ハケーン。
>あのソースは しすごでもBSDでもLinuxでも移植が容易。
をきちんと読んだか?
しかし、その後は平和な質問がでてきたな。
蒸し返すな馬鹿
406 :
デフォルトの名無しさん :04/07/10 14:16
UNIX厨は専用スレあるんだからそっちいけよ。
407 :
デフォルトの名無しさん :04/07/10 14:18
WindowsはM$だけだろ。 UNIX、Linuxはマルチベンダ。 その違いがわからないアフォが多いようですね。
結論 Unixネタは許容範囲 それ以外は出て行け
これからは POSIX と呼びませう
410 :
デフォルトの名無しさん :04/07/10 14:22
411 :
デフォルトの名無しさん :04/07/10 14:26
>408 UNIXネタというより、問題になったレベルくらいのシステムコールネタだな。 >410みたいなアフォはスルーで。 標準CをANSIだけのほうがスレとして偏りすぎ。 もとはUNIXなんだから、UNIXで普通に動くものは標準という認識でOK。 特定ベンダ・ディストに偏るならUNIX・Linux板または専用スレへかな。
412 :
デフォルトの名無しさん :04/07/10 14:29
仕様書すら読めない人が多いようですね。 それとも、自分の都合のいいように脳内変換しちゃうのかな?
↑勝手に脳内変換する馬鹿
414 :
デフォルトの名無しさん :04/07/10 14:34
> 標準CをANSIだけのほうがスレとして偏りすぎ。 ふつうISOだろ。
415 :
デフォルトの名無しさん :04/07/10 14:35
> void main() すでにここがだめ
早く俺に聞け!
UNIXでは動くけどWindowsやその他で動かないところは その都度 UNIX厨の方が教えてくれるそうです
速やかにM$を捨てなさい
捨てられたのはCの方なわけだが .NETでCは死滅します。
421 :
デフォルトの名無しさん :04/07/10 15:19
422 :
デフォルトの名無しさん :04/07/10 15:21
仕様書? そんなアフォSヨがつくったもんなんかみてられるか。
423 :
デフォルトの名無しさん :04/07/10 15:22
>>391 Cで書かれたコードという意味ならセーフだな
ただし、同じ意味でセーフにせにゃならん例がすごい数になるなあ
ちゃんと状況説明できる香具師なんてここにいるのか?
特定のOSに愛着する奴キモイ 次スレでは >GUIなどの標準Cでは の部分を ISO Cの規格内では に変更しよう。
425 :
デフォルトの名無しさん :04/07/10 15:26
int main() ↑ここがダメ
427 :
デフォルトの名無しさん :04/07/10 15:29
しかし、ISO、WindowsAPI、unix/Cでそれぞれスレが立つのもイヤだな。 って優香unix/Cだけではスレが勿体無い。 WindowsAPIはそれだけでも(レスの数が多いという意味で)アリの気がするが。 OS、コンパイラを指定すればOKにすれば?
どうでもいいんだそんなことは 早く質問しろ
FAQと煽りと雑談にはむちゃくちゃ寛大などころか率先してレス付けるのにな。 お前らちょっと病的だよ。
431 :
デフォルトの名無しさん :04/07/10 15:35
>>367 と同じで、どうしてリセットされるのかわからないのですが。。。
434 :
デフォルトの名無しさん :04/07/10 16:17
> #include<stdio.h> その前にここがだめ
435 :
デフォルトの名無しさん :04/07/10 16:18
> ちゃんと状況説明できる香具師なんてここにいるのか? オレがいいと認めたものは許可。 そうでないものはヨソで。 簡単でわかりやすいルールだろ?
436 :
デフォルトの名無しさん :04/07/10 17:51
>>384 は下手に出ていればいい気になりやがってこのやろうってところか
これからは回答にUNIXのシステムコールやライブラリを含めるか。
438 :
デフォルトの名無しさん :04/07/10 18:42
ダレカタスケテ 自分バカです #include<stdio.h> void main() { int i = 1 , j = 1 ; while( i <= 100 ){ printf("%3d",i); while( j == 10 ){ printf("\n"); } j++; i++; } 予期せぬEOFが検出されました
{}の対応を調べれ
440 :
デフォルトの名無しさん :04/07/10 18:48
void main()はダメ。
441 :
デフォルトの名無しさん :04/07/10 19:01
> while( i <= 100 ){ っていうか、なんだよこの空白のあけかたは...。 こういう間抜けなコードを書くやつって、たいがいこういうへんな空白なのよね。
442 :
デフォルトの名無しさん :04/07/10 19:05
#include <stdio.h> main() { int i; for (i = 1; i <= 100; i++) printf(((i % 10 == 0) ? "%3d\n" : "%3d"), i); }
443 :
デフォルトの名無しさん :04/07/10 19:08
#include <stdio.h> #include <stdlib.h> #include <time.h> main () { int i,n; double p,z,v,x,y,r,count; srand( time(NULL)); printf("n :"); scanf("%d\n",&n); for(i=0,count=0;i<n;i++) { z=(double)rand()/(double)RAND_MAX; /* 0<z<1の値をランダムに表す */ x=(z-0.5)*2; /* -1<z<1の値をランダムに表す */ v=(double)rand()/(double)RAND_MAX; y=(v-0.5)*2; r=(x*x)+(y*y); if(r<1){ count++; } } p=(count/n)*4; printf("π=%f\n",p); return(0); } -1≦x≦1,-1≦y≦1の範囲でランダムにn個の値をとり、 原点を中心とする半径1の円の中にある値の数を countとして数えていき、n個に対するcountの割合に4かけると πの値になるっていうプログラム。 コンパイルはできたのに値がうまくいかない。なぜ?
444 :
デフォルトの名無しさん :04/07/10 19:16
> コンパイルはできたのに値がうまくいかない。なぜ? 空白のあけかたが変だから。
445 :
デフォルトの名無しさん :04/07/10 19:18
> コンパイルはできたのに値がうまくいかない。なぜ? scanf使ってるから。
446 :
デフォルトの名無しさん :04/07/10 19:21
他には? 444,445以外の回答者はいないのか?
(double)rand()/RAND_MAX では 0<x<1 ではなく 0≦x≦1 になる。
449 :
デフォルトの名無しさん :04/07/10 19:24
>447 すいません。そこはスルーしてください。 書き間違えました。
450 :
デフォルトの名無しさん :04/07/10 19:28
452 :
デフォルトの名無しさん :04/07/10 19:30
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N10000000 main() { double x, y; double count; int i; srand(time(NULL)); count = 0; for (i = 0; i < N; i++) { x = ((double)rand() / (double)RAND_MAX - 0.5) * 2.0; y = ((double)rand() / (double)RAND_MAX - 0.5) * 2.0; if (x * x + y * y < 1) count++; } printf("π=%g\n", (count / N) * 4); return 0; }
453 :
デフォルトの名無しさん :04/07/10 19:31
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10000000 main() { double x, y; double count; int i; srand(time(NULL)); count = 0; for (i = 0; i < N; i++) { x = ((double)rand() / (double)RAND_MAX - 0.5) * 2.0; y = ((double)rand() / (double)RAND_MAX - 0.5) * 2.0; if (x * x + y * y < 1) count++; } printf("π=%g\n", (count / N) * 4); return 0; }
454 :
デフォルトの名無しさん :04/07/10 19:33
>>451 あ、すいません。
でも、直してもcountの値が増えないんですが、
根本的に間違っているんでしょうか?
455 :
デフォルトの名無しさん :04/07/10 19:33
intが16bitマシンなのだろう
456 :
デフォルトの名無しさん :04/07/10 19:44
>>453 ありがとうございました。
うまくいけました。
どこが悪かったんでしょうか?
457 :
デフォルトの名無しさん :04/07/10 19:45
> うまくいけました。 > どこが悪かったんでしょうか? 空白の空け方です。 今後は正しい空白のあけかたで書くようにしなさい。
458 :
デフォルトの名無しさん :04/07/10 19:46
(1) scanfを使わないようにする (2) 空白のあけかたを正しくする -> なおった わしょーい
ifの後に空白空けるなボケ 関数と間違いやすい?ドコまで低脳なんだよボケ
460 :
デフォルトの名無しさん :04/07/10 19:51
> ifの後に空白空けるなボケ ifのあとの空白をつめるな ぼけ
461 :
デフォルトの名無しさん :04/07/10 19:51
whileのあとも同様
コーディングスタイルについていちいちたたき合うな ぼけ
463 :
デフォルトの名無しさん :04/07/10 19:52
つめたら見づらいのはあたりまえ。 で、みづらいからといって、括弧の内側に空白あけるのはさらにぼけ
464 :
デフォルトの名無しさん :04/07/10 19:52
コーディングスタイルについついちきちきばんばんしろ ぼけ
> ifのあとの空白をつめるな ぼけ ifのあとに空白空けるな ぼけ whileのあとも同様
466 :
デフォルトの名無しさん :04/07/10 19:53
>>462 言われるとそんなにつごう悪いのか ;-)
ifの後に空白入れると見やすくなると思ってるなら、関数の後にも空白入れろ ぼけ
>>466 両方に対して言ってるのでそれはありません ;-)
469 :
デフォルトの名無しさん :04/07/10 20:01
>>467 > ifの後に空白入れると見やすくなると思ってるなら、関数の後にも空白入れろ ぼけ
予想以上のレスがついた
470 :
デフォルトの名無しさん :04/07/10 20:03
472 :
デフォルトの名無しさん :04/07/10 20:06
>>471 どこでもいい とにかく空白あけろ ぼけ
scantf("%d\n",&n); の\nをどけたらできました。 πの値が大きかったので、間違いだと思ってました。
>>456 >443でも巧く行ったぞ。但し、nの入力の後で入力を打ち切ったがな。
まぁなんだ、scnaf()は使うな、ってことだ。
475 :
デフォルトの名無しさん :04/07/10 20:12
>>474 なんでそんな結論になるんだ ぼけ
ifの後に空白入れないからだろ ぼけ
見辛いとか言ってる先天的染色体異常者なボクちゃんは、 とても見やすい構文カラーエディターは使えないのかな? メモ帳でプログラムしちゃってるのかな? それとも色盲の症状もでちゃってるのかな? 病院は9時で閉めるから早くねんねしてね。
戻り値もないのに関数っていうな ぼけ
C ってステキな言語だね。 でも、関数名を括弧の内側に書けた方がもっとステキだね。 (printf, "%s\n", "Hello, World.");
schemer?
480 :
デフォルトの名無しさん :04/07/10 20:40
なんでscanfはだめなの?
481 :
デフォルトの名無しさん :04/07/10 20:44
483 :
デフォルトの名無しさん :04/07/10 20:57
うわ、又間違えた。 逝ってきます。
485 :
デフォルトの名無しさん :04/07/10 22:46
「ぼけ」さん、だいぶ骨抜きになってきたねw
486 :
デフォルトの名無しさん :04/07/11 03:05
>>487 すみません。
症状といたしましては、
・昇順に並び替えたいのに、順番がめちゃくちゃになる
・名前がネという名前で表示されている人が何人か出てくる
といった具合です。
どうかよろしくお願いいたします。
ここまであつかましいデバッグ依頼は初めてだな
490 :
デフォルトの名無しさん :04/07/11 03:22
これは宿題スレの守備範囲だろ?
491 :
デフォルトの名無しさん :04/07/11 03:39
> scantf("%d\n",&n); > の\nをどけたらできました。 やっぱりぼけな質問するやつはscanf使ってる の法則
492 :
デフォルトの名無しさん :04/07/11 03:41
> 見辛いとか言ってる先天的染色体異常者なボクちゃんは、 > とても見やすい構文カラーエディターは使えないのかな? ...やはりぼけだったか...
493 :
デフォルトの名無しさん :04/07/11 03:57
> 症状くらい書け 症状きくまでもねーだろ ぼけ バグはここだ > scanf("%s", temp.name); 理由: scanf使っているから
494 :
デフォルトの名無しさん :04/07/11 04:03
突然ですが、とてもC言語に詳しいようなのでひとつお聞きしてよろしいでしょうか? 私は今自宅のPCでJavaを勉強しています。そして今回あらたにC言語を勉強する羽目になってしまいました。(業務でつかうため) でも、私はPCのことはあんまりわかりません。 Javaを入れたときに環境変数でPATHを設定しましたが、Cをいれたらこれをかきかえなくちゃならないんですか?二つの言語を同時につかうにはどうしたらよいのでしょうか?
>>494 C言語のコンパイラによる。マニュアル読め。
両方入れても別にぶつからないから書き換えというかパスを追加すればいいだけ。
497 :
デフォルトの名無しさん :04/07/11 04:08
case SortEng : sortmath(&list); break; ここおかしくない?
498 :
デフォルトの名無しさん :04/07/11 04:12
> PATHを設定しましたが、Cをいれたらこれをかきかえ 書き足すんだよ ぼけ
499 :
デフォルトの名無しさん :04/07/11 04:19
「ぼけ」さん、だいぶ骨抜きになってきたねw
500 :
デフォルトの名無しさん :04/07/11 05:19
どういうわけか一瞬Perlに見えた。
>494 それよりそんな状態で業務アプリケーション作ってるほうが気になる。 ましてC言語なんて・・・(((((゜д゜;)))))
502 :
名無しさん@そうだ選挙に行こう :04/07/11 11:41
>>492 言い返せないのか やっぱりぼけだなお前は
初心者的な質問でごめんなさい。 「scanf」とか「空白」とか「ぼけ」って言葉がここでは流行ってるんですか?
Cってずいぶんプリミティブな言語ですね。
それが魅力なんです
#include <stdio.h> #define QUE 1+1 int main() { int ans; printf("%dは?\n",QUE); //ここで"1+1は?"と表示させるにはどうしたらいいですか? scanf("%d",&ans); if(QUE == ans) printf("正解"); else printf("ハズレ、答えは%d",QUE); return 0; }
508 :
名無しさん@そうだ選挙に行こう :04/07/11 14:42
関数ポインタって、なんに使うんですか?
コールバックとか qsortでも使ってみれ
>>494 >突然ですが、とてもC言語に詳しいようなのでひとつお聞きしてよろしいでしょうか?
よろしいですって言われてから質問しろよボケ
>>507 すまん。このぐらいしか思いつかん。
#include <stdio.h>
#define QUE 1+1
#define QUE_STR "1+1"
int main()
{
int ans;
printf("%sは?\n", QUE_STR); //ここで 〜
以下同文
またscanfか
あー俺の512がー
printf("%sは?\n", #QUE); //ここで 〜
>>514 おれもそう思ってやってみたけどコンパイルできんかった。
は?
哀れ
error C2014: プリプロセッサ ディレクティブのシャープ記号 (#) の前に、空白文字以外の文字があります。
error: syntax error at '#' token
525 :
名無しさん@そうだ選挙に行こう :04/07/11 16:40
>>507 どうして printf("%d", QUE * 2); しないのー?
lcc使えよタコ
>>525 1+1*2を計算する必要がないからじゃないのー?
未だにGW気分
cl.exeが吐くメッセージなんでSJISなんだよぼけ オレのtermはeucしか見れねーんだよタコ alias cl 'cl.exe \!* | nkf -e' で解決したと思っていいのかクソ
533 :
名無しさん@そうだ選挙に行こう :04/07/11 17:05
nkf で -eをdefaultにしたのはKusakabe先生ですよね。
>>532 while( fscanf( fp, "%s", &t1 ) != EOF ) {
これか? ↑
535 :
名無しさん@そうだ選挙に行こう :04/07/11 17:16
test
536 :
名無しさん@そうだ選挙に行こう :04/07/11 17:16
うわ、本当に名無しが変えられている。死ね夜勤。
538 :
名無しさん@そうだ選挙に行こう :04/07/11 17:19
char w1[30],w2[30]・・・なんてやらないでchar w[32][30]にすればいいのに。
>>532 全てのif文while文の後をブロック化しろ。話はそれからだ。
なお、534の指摘は正しい。
540 :
名無しさん@そうだ選挙に行こう :04/07/11 17:20
printf("%f\n", (n1+ n2+ n3+ n4+ n5+ n6+ n7+ n8+ n9+ n10+ n11+ n12+ n13+ n14+ n15+ n16+ n17+ n18+ n19+ n20+ n21+ n22+ n23+ n24+ n25+ n26+ n27+ n28+ n29+ n30+ n31+ n32)/i1); ↑あとこれは%dで受け取るべき。
541 :
名無しさん@そうだ選挙に行こう :04/07/11 17:21
> あとこれは%dで受け取るべき。 なんで連体形?
>>541 意味ねーよ。
つか連体形ってしらねーし。
543 :
名無しさん@そうだ選挙に行こう :04/07/11 17:25
> つか連体形ってしらねーし ぼけ
>>541 空白あけろ/あけるなとか
言ってるのはお前か?
>>542 連体形知らないって何歳だよ・・・
545 :
名無しさん@そうだ選挙に行こう :04/07/11 17:26
546 :
名無しさん@そうだ選挙に行こう :04/07/11 17:26
27歳。連体形なんか知らない。おすすめ。
548 :
名無しさん@そうだ選挙に行こう :04/07/11 17:27
メール欄でわかると思うが、542!=540
スマソ 矢印がズレたばっかりに・・・
550 :
名無しさん@そうだ選挙に行こう :04/07/11 17:28
>>547 未然形
連用形
終止形
連体形
命令形
>>550 もう行って来た。8時前に。まじおすすめ。
未然形 ・・・ 決して死なせない 連用形 ・・・ 奴の死を無駄にはしない 終止形 ・・・ 死んだ 連体形 ・・・ あいつを殺して俺も死ぬ 命令形 ・・・ とっとと死ね
554 :
名無しさん@そうだ選挙に行こう :04/07/11 17:32
最近の選挙って全部名前だから面倒だった。 結局ひらがなの人にするよね。
556 :
名無しさん@そうだ選挙に行こう :04/07/11 17:36
れんほう に入れました
おいC言語よりもよ、うちの前に止まっている違法駐車トラックをなんとかしろよ!!! 金曜日に警察に電話したら「花金だからねー来週にしてもらえる?」だとよ。 頭にきたから「お前をscanfするぞ!!!」と言ってやったさ。 あー言ってやったさ!!!
で、どこが笑えるんだ?
お前の頭の回転の鈍さ ゲラゲラ
面白い!!!!!!!もっとキボンヌ!!!!!!!!!
561 :
名無しさん@そうだ選挙に行こう :04/07/11 17:43
ボケラ ボケラ 空白入れろ ボケラ ボケラ
562 :
名無しさん@そうだ選挙に行こう :04/07/11 17:49
"べきだ"の"だ"の省略だろとマジレス
563 :
名無しさん@そうだ選挙に行こう :04/07/11 17:51
さっき投票に行ってきたが、唯一神はカタカナだった。
565 :
名無しさん@そうだ選挙に行こう :04/07/11 18:03
>>564 printf("%f\n", (double)(n1+ n2+ n3+ n4+ n5+ n6+ n7+ n8+ n9+ n10+ n11+ n12+ n13+ n14+ n15+ n16+ n17+ n18+ n19+ n20+ n21+ n22+ n23+ n24+ n25+
n26+ n27+ n28+ n29+ n30+ n31+ n32)/i1);
>>564 =532
main()関数のブロックがなくなったぞ。エラーが出たら先ず見直せ。
>>567 ありがとうございました。
コンパイルはエラー無しでできたんですが
思ったとおりに動かないのでもう少し考えたらまた来ます。
w1からw31、n1からn31までは初期化されてないとか
t1と比較すべきが"t1"と比較してるとか
そういう基本的な突っ込みはもう誰かしたの?
>>566 賛成。俺もあげなプログラムは途中で挫折する。
もっと楽に書くべ。
あー、と思ったが、それだけじゃなくてあちこち問題だらけだ。 ・fscanf()の使い方が間違っている。 ・strcmp()で"t1"と比較しているが、それでは意味がないだろう。 ・変数の初期化は個別にやらないとダメ。 ・32単語以上出てきたときに破綻する。 って、纏めている間に>569が指摘しているね。
あー、未だあった。 ・途中でw1が間違って比較対象になっている。
自分で疑問に思わないんだろうか。 似たようなの繰返し書いてて、 「こんなこと誰も彼もがやってるわけない、すっきり書く方法が何かあるはずだ」と。 思っててもそれどころじゃないのかな。
組んではみたが、i1の役割が分からん。重複率かなんか求めてるのか? >/* ファイルを閉じる */ なんてコメントを入れるくらいなら >printf("%d\n", (n1+ /*(中略) / n32)/i1); にコメントをくれ。
>>573 思ったんですが探しても見つからずこうなりました。
2次元配列を調べてみます。
>>574 同じ単語が何回出てきたかを数えたいんです。
もう一つ、なぜ
>>532 はcharの方は配列使ってるのにintの方は使わないんですか?
なんか分からないけど文字列のときは配列使う、というのがインプットされてるんですか?
>>576 もう一度いうが
>printf("%d\n", (n1+ /*(中略) / n32)/i1);
にコメントをくれ。
同単語の出現数をカウントしたいのならi1はいらない。
各単語の1回目のカウントはi1に奪われているが、それは意図した動きなのか?
579 :
名無しさん@そうだ選挙に行こう :04/07/11 19:34
char fstr[64], lstr[64], str1[64], str2[64]; char buf[256]; long fl, ll; int i, n; fgets(buf, sizeof buf, stdin); for (i=0,n=0; !(buf[i]=='['); i++,n++) str1[n] = buf[i]; str1[n+1] = '\0'; for (i++,n=0; !(buf[i]=='-'); i++,n++) fstr[n] = buf[i]; for (i++,n=0; !(buf[i]==']'); i++,n++) lstr[n] = buf[i]; for (i++,n=0; !(buf[i]=='\0'); i++,n++) str2[n] = buf[i]; fl = atol(fstr); ll = atol(lstr); for(; fl<=ll; fl++) printf("%s%ld%s", str1, fl, str2); return 0; str1の最後に入力していない文字が入る事があるのですが 何故なんでしょうか?
str1[n] = buf[i]; //こいつが終わった時点で i++,n++ //これが行われ !(buf[i]=='['); //これが判定され str1[n+1] = '\0'; //これが行われる n が余計に足されてる。
581 :
名無しさん@そうだ選挙に行こう :04/07/11 19:39
>>579 str1[n] = '\0';
ところで、!=という演算子を知っている?
ところで・・・・エロ画像連番 URL 群簡略表現の展開プログラムとみましたがいかがですか?
>>577 インプットされてました。intにどう配列を活用するのかわかりません。
>>578 同じ単語が何回出てきたか調べたあと、その平均を出すためです。
最近は配列を飛ばしていきなりファイル操作へ移るのか・・・?
正しく動くようになりました。 有難う御座います。
>>583 とりあえず、n1 n2 n3 と書くのと、n[1] n[2] n[3] と書くのは、
手間のことだけ言えば同じようなもんだというのはわかるよな。[ と ] 書き足すだけだから。
それを
for (k=1; k<=3; k++) {
n[k] がどうのこうの
}
と書けたら楽だよな。上限が 1000 だの 2000 だのに増えても書き直す場所・書き足す場所少ないからな。
そこまで理解できたらあとは int n[32] とか int n[33] とか宣言しちまえばいい。
>>581 知っていますが思いつきませんでした。
そちらの方が簡略になりますね。
>>582 エロではありませんが掲載するほうです。
手入力がめんどくさいのでリダイレクトしようかと思って。
思いつかない==知らない
システムコール並の質疑限定で聞いてやるよ 餓鬼共質問し給え
591 :
名無しさん@そうだ選挙に行こう :04/07/11 20:15
システムコール並の質疑ってなんですか?
聞くだけなのかよ
593 :
デフォルトの名無しさん :04/07/11 20:27
> 同じ単語が何回出てきたか調べたあと、その平均を出すためです。 awkで書けよ...。1行でかけるぞ!
答えるに値する質問ならば答えようではないか!
596 :
デフォルトの名無しさん :04/07/11 20:41
でふぉ名無しに戻った
よし、ガンガン難しい質問してこい!聞き流してやるよ
>>584 最後をこう変えました。
for ( i = 0; i < WORDS_MAX_NUM; ++i )
{
fprintf(fp,"\n%s---%d", words[i], wordCounts[i]);
}
fclose(fp);
return 0;
}
あとweとwe,が別の単語として扱われてるんで、
while( fscanf( fp, "%s", &buf ) != EOF )
{
StrReplace( String, ",", " " );
StrReplace( String, ".", " " );
StrReplace( String, ";", " " );
こうやって置き換えようと思ったんですがうまくいきません。
599 :
デフォルトの名無しさん :04/07/11 22:05
C言語でDLLファイルを読み込むプログラムを作成したいのですが、 アドバイスや参考になるHPがありましたら、お教え下さい
>>532 fscanf()は空白を剥がすが、StrReplace()はきっと空白に置き換えてそのままなのだろう。
603 :
デフォルトの名無しさん :04/07/11 22:06
StrReplaceって何?
605 :
デフォルトの名無しさん :04/07/11 22:08
>>604 いろんなのが引っかかるんだけど。
ペルソナが有力?
607 :
デフォルトの名無しさん :04/07/11 22:09
>>601 すみません、「gtk」でぐぐってもよくわからないいんですが、何かの略ですか?
>>602 え!?スレ間違えてますか?
609 :
デフォルトの名無しさん :04/07/11 22:10
もっとレヴェルの高い質問所望
しょぼーん
612 :
デフォルトの名無しさん :04/07/11 22:12
しょもーん
g ガ t チン k コ
615 :
デフォルトの名無しさん :04/07/11 22:19
int *(*i[100])( char **p); ってどういう意味????????
617 :
デフォルトの名無しさん :04/07/11 22:22
charのポインタへのポインタ。
618 :
デフォルトの名無しさん :04/07/11 22:22
pとiの関係は?
>>616 「intへのポインタを返しcharへのポインタへのポインタを引数に取る関数」へのポインタの配列
621 :
デフォルトの名無しさん :04/07/11 22:24
int *(*i[100])( char **); これと同じ。pにはなんの意味もない。
いみ、わかんね。
関数ポインタの配列ってナニ? 意味あるの?
624 :
デフォルトの名無しさん :04/07/11 22:32
625 :
デフォルトの名無しさん :04/07/11 22:33
626 :
デフォルトの名無しさん :04/07/11 22:33
レベルの高い質問まだ?
>>625 何だよ、おめーの方が荒らしてんじゃん。バッカじゃねーの
関数ポインタの配列って、 配列の中身がポインタで、 そのポインタの指しているのが関数の(先頭)アドレスってこと? これが間違ってないなら、どういう場面で便利なの?
630 :
デフォルトの名無しさん :04/07/11 22:34
やさしいC を終えた程度のレベルなんですが 次に読む本でおすすめありますか? やっぱカーニハンでしょうか? プログラミングの本ってタイトルから難しいの 多くて、迷います・・・
>>631 つくってわかるC
auther:日下部陽一
auth"e"r
>>630 複数の関数を選択したい場合が生じるってことは、関数の設計がそもそも杜撰だったってことではないいのですか?
以降、635はスルーで。
なんで? なんかヘンなこと言った?
>>635 つまりお前は
if (hoge)
Hoge();
else
Hage();
とかやんないんだな
>>635 この手の技法は綿密に設計しとかないと使えません。
釣られるなよ。
変数をテーブル化するのと本質的には変わらん。 なぜ配列というものがあるのか。それの答えが、この問いへの答えだ。
>>638 そのような分岐が不可避になった事例はありません。
>>639 すみませんが、綿密な設計の結果の例を示して頂けませんか?
>>641 それは敗北宣言と受け取って宜しいですか?
644 :
デフォルトの名無しさん :04/07/11 22:43
やっぱり荒らしじゃん・・・
>>632 Amazonで調べてみました
なかなかよさげですね ありがとうございます
なんだ敗北って?
え?! 勝利宣言だよ!
私の質問に答えてくれる人はこのスレにはいないようなのでもう消えます。 他の板を探します。ありがとうございました。
>>650 それは敗北宣言と受け取って宜しいですか?
引数を指定する必要がある関数をポインタ経由で呼び出すとき、引数を指定する必要はあるんですか?
別に質問に答える必要はないしな。 教えてもらいたいなら、それなりの態度があるだろ。
教えて君
でも単にポインタだけを指定して引数をあらわに記述しない例をどこかで見たのですが これは妄想ですか???
659 :
デフォルトの名無しさん :04/07/11 22:54
>>657 じゃあ必要な引数がないか、引数リストが省略されていたんじゃないの。
>>657 別の関数ポインタ型にキャストでもしていたんじゃね?
関数ポインタ型は、引数や戻り値まで含めて型宣言されるわけで、
宣言したからにはそのとおりに呼び出さなきゃエラーになるのがC。
>引数をあらわに記述 >引数をあらわに記述 >引数をあらわに記述 >引数をあらわに記述 >引数をあらわに記述 プ
あらまー
663 :
デフォルトの名無しさん :04/07/11 22:57
露とかいてあらわと読むんだよね。 天ぷら君のおかげで知った。
露光の露 露出の露 露骨の露
炉利の露
「あらわ」で変換すると「新を」がでてくるのはウチのIMEのバグか?
あれ、うちのは粟原とか芦原だ。何でだ
顯
670 :
デフォルトの名無しさん :04/07/11 23:04
あ ら や だ
し ん だ
673 :
デフォルトの名無しさん :04/07/11 23:23
お前らちゃんと朝鮮人選挙権を実現できる政党に投票したか?
世界経済共同体党に投票しました。
sprintfってのが便利らしいですね どう便利なのか教えてみ?
セキュリティー上の各種問題点の原因であるgets()が仕様から削除されてないのはどうしてですか?
作成する全てのプログラムに 高いセキュリティ性が必要であるとは 限らない
>>678 あなたが作成したプログラムについて、(将来にわたって)どのようなプログラムから呼ばれるかを
あなたは完全に把握していますか?
それでもgetsを使いますか?
getsを使うようなアホは即刻クビだから安心汁w
必要もないのにセキュリティを気にする奴は、 セキュアなプログラムを書けない。
682 :
デフォルトの名無しさん :04/07/12 00:31
>>679 リリースしないプログラムの場合、把握できる場合はあるね
BL4でホールピペット使ってしくじるアフォがいてもそんなことが
ホールピペットそのものの販売禁止にする理由にはならないように
オレはプログラマになるつもりは全くないから問題なし 自分で欲しいなぁと思ったものを作るのみ でもgetsは使わないな
>>681 できる限りセキュアにコードを書く人間と、あなたのような態度の人間では、
どちらがより優れたエンジニアでしょうか?
>>684 まずは、セキュアであるとはどういうことかの見極めから始めよう。
コード単体で見てもセキュアかどうかは見えないよ。
>>685 getsが使われている“単体の”コードはセキュアかどうかを判断できませんか?
そのコードが将来どのような利用をされるかを完全に把握できる神なら安全であると判断するかも知れませんが、
あなたは神ですか?
私の質問に答えてくれる人はこのスレにはいないようなのでもう消えます。 他の板を探します。ありがとうございました。
>>686 判断できません。
どう使われるか分からないものを、getsがあるかどうかで判断することは不可能です。
>>689 どのような入力がなされるかわからないのに、バッファの制限が破綻しているgetsを使うのですか?
それでも判断が不可能であると主張しますか?
ダンディ坂野
きょうびgetsなんか使わネーヨ(プゲラ とかいう書き込みが当然返ってくると思ってたのにスゲーがっかり・・・
>>690 セキュリティが問題とならない場面では、べつに構わない。
セキュリティが問題となる場面では、gets使わないことがセキュアである
証明とはならない。
>>693 論点がズレまくってるんですが、
セキュリティが問題になる場面と、そうでない場面をどうやって判断するんですか?
セキュリティが問題にならないとあなたが判断した場面では、あなたはgetsを使いますか?
プログラムは全部外注
うひゃあ ダメだコリャwww
>>696 万が一、あなたが職業プログラマなら、ぜひ勤務先を教えてください。
取引先だったら一大事です。
なるほどね。 だからPGはバカにされるのね。
>>694 他人のシステムの仕様までは知らないし、いずれにせよ
「セキュアとはどういう状態か」というのはそれぞれの仕様で決めるべきで
あって小手先で弄るようなものではない。
俺はgetsは使わないけどな。
バッファオーバフローが気持ち悪いからというだけだけど。
scanfがどうのこうのgetsがどうのこうの
プログラマって勉強しないの?
ここで質問に答えてる人は職業プログラマですか?
705 :
デフォルトの名無しさん :04/07/12 01:31
ここの質問答える人はレベル低いのばっかだよ。 make通らないけど何でとか、そういう質問でないと聞くだけ無駄。 よほど基本的なことでない限り、他の質問スレがいくつかあるからそっち当たってみ。
706 :
デフォルトの名無しさん :04/07/12 01:36
┌┬┬┬┐
―――┴┴┴┴┴―――――、
. . /  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ || __________
./ ∧// ∧ ∧| || ||| || /
[/____(゚_//[ ].゚Д゚,,) ||___||| || <
>>705 を迎えに来ました
. ||_. * _|_| ̄ ̄ ∪|.|. |ヽ.__|| \__________
. lO|o―o|O゜.|二二 |.| 和親坂病院 ||
.| ∈口∋ ̄_l__l⌒l_|___|_l⌒l._||
 ̄ ̄`ー' ̄ `ー' `ー' `ー'
>>698 あぁ……自分で書いといてなんだが、見つけたあともbreakしたほうがいいな。
表示・i3・i4のループは1つでいい。
あと変数名のセンスがばらばらなので、自分の命名に置き換えたほうがええやろね。
>>694 ズレてんのはあんただ。
getsが必要なら使う、不要なら使わん、それだけだろ?
俺は使ったことないがな。
やっぱりレベル低いね
>>684 >できる限りセキュアにコードを書く人間
こんなバカは役に立たね
それが分からんバカはじゃもっと役に立たねぇ
言われたことだけやっとけや
711 :
デフォルトの名無しさん :04/07/12 02:05
> セキュリティー上の各種問題点の原因であるgets()が仕様から削除されてないのはどうしてですか? 順序としてはscanfが先だからです。
うほっ 香ばしい もっとやれwww
仕様書にgetsを使うなって書いてなければgetsを使うのか。さすが奴隷プログラマ。 思考停止だな。
プログラマの社会的地位が低い理由が分かったような気がする。
状況判断もできずに細部にこだわって結局進捗の守れんやつっているんだよなぁ テスト用のコードにエラー処理入れようとするやつとか なにが重要でなにが重要でないかを見極められないやつは奴隷で充分 その上でクライアントからの入力取得にgetsを使おうとするやつは隔離すればよい
プログラムって中国人とかがやるんじゃないの?
こういう形でしか伸びないのか、このスレ。 とりあえずこれ見て落ち着け。 MMMMMMMMMMM MMMMMMMMMMM M M M −− −− M M O O M M l M MML JMM MMM L V J MMM MM L J MM l l / L / --O---O/ / / /l / / 9m ) mm ( ---------- ( V ) l l l l l l l l l l l l cuuuu cuuuu
>>716 そりゃそうだろ、IT土方は我々中国人にお任せあれ!
中国人はソフトウェアの違法コピーが盛んなので、プログラムもコピペだらけです。 コーディングスタイルに一貫性がありません。 コメントも日本語だったり英語だったり中国語だったりします。
あるいは中国人がGPL汚染から世界を救う救世主なのかもしれないな。
中国人の汚染から世界を救う救世主はどこに? チベトはもう終わったし…
722 :
デフォルトの名無しさん :04/07/12 08:47
メモリ領域にはどうして TEXT DATA BSS STACK HEAP の5種類しかないんですか?もっと多様なメモリの使い方があっても いいと思いませんか?
723 :
デフォルトの名無しさん :04/07/12 09:11
うちのには8種類ありますよ
724 :
デフォルトの名無しさん :04/07/12 09:13
ディジタル土方は中国人より日本人向きなのよね。実際。 中国やネパールは人件費安くて、中国人やネパール人の設計者はけっこういるが、 コーダーはほとんど日本人...という変な図式があちこちにある > 国内
725 :
デフォルトの名無しさん :04/07/12 09:15
>>723 その8種類とはどんなものがあるんですか?教えて下さい
3種類ってのもあったな。
>>722 Cのループ制御はどうして、
while
for
の2種類しかないんですか?もっと多様な制御文があっても
いいと思いませんか?
>>579 思いっきりスレ違いだが、別にプログラム組まなくていいんだよ。ほれ!
$ for n in `seq -w 0 52`;do wget http//:www.eroero/img$n.jpg;done
>>727 多様化するまえに、while があれば済むということに気がつかないか?
>>730 ifとgotoとscanfがあれば済むということに気がつかないか?
733 :
デフォルトの名無しさん :04/07/12 10:10
foreachはきもいからいらない。
ここの連中はdo whileをしらないの?
736 :
デフォルトの名無しさん :04/07/12 11:21
質問です gets()関数についてですが、たとえば・・・・ float a; char c[100]; printf("数1を代入してください。\n"); scanf("%f",&a); printf("演算子をひとつ入力してください。\n"); gets(c); とした場合、演算子が入力できず、 float a; char c[100]; printf("演算子をひとつ入力してください。\n"); gets(c); printf("数1を代入してください。\n"); scanf("%f",&a); のような形でgets(c)の処理を一番前に持ってきた場合入力が可能になります。 gets()関数は、必ず最初に宣言するものなのでしょうか? 後々で宣言してもいい場合何か方法あるの?? すんません、おしえてください。
>>736 scanf()の仕様をよく判っていないなら使うな。その奇妙な振る舞いはscanf()の仕様をお前が判っていないからだ。
gets()は通常使ってはいけない。fgets()で置き換え可能なのでそちらを使うか、他の入力関数を使え。
>>722 何のシステムの話をしているのか知らんが
他所でやれ莫迦。
739 :
デフォルトの名無しさん :04/07/12 11:41
>>736 scanfとgetsを混ぜて使ってはいかん
740 :
デフォルトの名無しさん :04/07/12 11:42
>>736 scanf()が改行コードを読み込んでないから、gets()が
ストリームに残った改行コードを読み込んでしまってると
思われ。
scanfは挙動が把握しにくいから初心者のうちは使わないほうがいいかも。
そのコードは、↓で動くようになると思う。
printf("数1を代入してください。\n");
scanf("%f",&a);
char ch;
printf("演算子をひとつ入力してください。\n");
scanf("%c", &ch);
馬鹿ばっかりなスレだな
743 :
デフォルトの名無しさん :04/07/12 12:36
馬鹿馬っ鹿り
馬鹿秤
746 :
デフォルトの名無しさん :04/07/12 13:02
状態遷移を表す際、関数ポインタを使って、関数テーブルを組んで、 switch文による冗長な表現をしないで済むようにするテクニックがあるそうですが、 テーブルを組むところがわかりません 何かよい実例など、ないでしょうか?
たとえば void func1(void) {} void func2(void) {} typedef void (*FUNC)(void); const FUNC f_ar[] = { func1, func2, }; /* 呼び出し */ f_ar[0]();
>>747 いちいち typedef すんな ぼけ
ぼけがでてきてから極端に低レベルになったな。
この前、遊びで英語外来語を使わずにプログラミングの話をしようって事に なったんですけど結構面白かったです。 お金帝国、視力検査言語、機械語の翻訳化、教室、たすたす、直接ぺけ など、色々面白い単語が出てきました。 でも、ほとんど会話になりませんでした。
板違いです
>>751 お金帝国 これなに?
視力検査言語 わかったC言語でしょ
機械語の翻訳化 逆アセンブルのこと?
教室 教室は教室?
たすたす C++でしょ あれインクリのこと?
直接ぺけ なにこれ?
DirectX
教室は class だろうたぶん。 翻訳「化」ってなんだろうな。化をつけざるを得ない状況ってなんだ。
このスレは700過ぎると荒れるのね。
教室は class room だろ。 class ならむしろ 教科 だ。
お金帝国→金の帝国→北朝鮮
#include <stdio.h> #include <stdlib.h> struct btree{ unsigned int ipadd; unsigned int id; }; struct btree *talloc(void) { return malloc(sizeof(struct btree)); } main(){ FILE *fp; struct btree *root; root=talloc(); fp = fopen("aaa.txt","r"); fscanf(fp,"%u",root->ipadd); fclose(fp); 上記のプログラムを実行するとコアダンプしてしまいます。 root->ipaddが怪しいと思うのですが、どのようにすれば解決しますでしょうか(ipaddに値を格納したい)? アドバイスお願いいたします。
760 :
デフォルトの名無しさん :04/07/12 17:07
レスありがとうございます。できました。 &(*root).ipaddでも同じですよね?
>どうもうまくいきません。教えてください。 そのうまくいかない、ソートのプログラム部分も 晒さないとだれも教えてくれない悪寒・・・
>>762 マルチいくない。
宿題丸投げイクナイ。
>>763 さんのアドバイスにレスしないイクナイ。
で、答
void sort_list(Node *head){
Node *current_node, *sorted_node, *min_ptr, *temp;
if(head->next->next == head->next) return;
sorted_node = head;
while(sorted_node->next->next->next != sorted_node->next->next){
min_ptr = sorted_node;
current_node = sorted_node->next;
while(current_node->next->next != current_node->next){
if( strcmp(min_ptr->next->c, current_node->next->c) > 0)
min_ptr = current_node;
current_node = current_node->next;
}
temp = min_ptr->next;
min_ptr->next = min_ptr->next->next;
temp->next = sorted_node->next;
sorted_node->next = temp;
sorted_node = sorted_node->next;
}
}
>>764 を自動翻訳にかけてみた。(ただし %s/_/-/g)
無効の種類リスト(ノード*頭){
ノード*-流れノード、*にソートされたノード、
場合(頭―次に>―次の==頭>―nexはノードをソートしました>=頭)
一方(ソートされたノード>-次に―次に>―ソートされたn min-ptr=ノード>)
ソートされた現在のノードの=ノード>-次、一方(現在のノード>-次に―次に>)
場合(strcmp(min-ptr>-次に―c(野良犬のmin-ptrの=の現在のノード);
現在のノードの=の現在のノード>-nex}臨時職員=min-ptr>-次に;
min-ptr>-次の=min-ptr>-次に―n臨時職員>-次のソートされた=ノード>-次に;
ソートされたノード>-次の=臨時職員;ソートされたソートされたノードの=
}
}
char s[256]; の様に変数を宣言するとき、 数字256の部分は最大でいくつまで指定できるんでしょうか 限界とかありますか?
プラットフォーム・コンパイラによる。 ただし一般的にはそれほど大きな値は指定するべきではない。 大きな領域をとる場合mallocを使う。
769 :
デフォルトの名無しさん :04/07/12 20:48
>>767 「大きな領域」の基準が不明瞭な処理系依存になる
目的により static や auto でリンカ側に調整させるべき
俺的にはスタックにはchar buf[8096]が許容範囲だな。 別に根拠はないが。
>>769 使い捨てアプリでもない限り
「大きな領域」はstaticやautoには取らないだろ。
どっちにしてもメモリ効率悪すぎ。
ギガ単位のファイル扱うならファイルにマップすりゃいいし。
772 :
デフォルトの名無しさん :04/07/12 20:59
773 :
デフォルトの名無しさん :04/07/12 21:00
アルバイト
>>774 はいはい、お見事なお答えでやんす (プ
>> 770 8096て何?残りの96バイトは何用? 8192の残りね。
>>776 放っといてやれよ
リンカのマニュアル読めないんだからw
こんな質問に答えなんか無いだろ?バカ?
もしスタックに置くのなら、リンカなんか関係ないだろ。
ここはポインタに苦手意識を持つ人の集うスレですね
>>781 関係あるかどうかが
リ ン カ の マ ニ ュ ア ル に 書 い て あ る
わけだが (ハライテー
ひとり香ばしい人は何がしたいのですか
学生さんが引っ込みがつかなくなっただけだろ。
わざとバカな事を言ってとりあってもらえるのが嬉しいだけの人間失格者でしょう
788 :
デフォルトの名無しさん :04/07/12 21:29
>>786 線引きできると思うなら荒らしてないで自分でしてみたら?
( ´,_ゝ`)
790 :
デフォルトの名無しさん :04/07/12 21:33
非科学的厨とぼけ厨の戦いが繰り広げられる予感!
ふと思ったんだが、このスレで毎日のように繰り返されてる しょーもない煽り合いって全部一人の自演じゃないかな。
ここは精神科患者のレス療法用のスレですのでお察っし下さい
>>792 そうだよ。たまに面白がって乗っかっていく奴もいるが、
全部と言わずもほぼ一人。
796 :
デフォルトの名無しさん :04/07/12 22:02
どうして報道ステーチョンの印象操作ってあんなにキモいんですか?
799 :
デフォルトの名無しさん :04/07/12 22:31
>>791 おやおや、自分じゃ敵わないと見るや ぼけ 先生にすがるしかなくなったか
# なっさけねー 人間どんなに落ちぶれても、ああはなりたくないね
# 言い返すのに失敗することと自分の間違いを認めることくらい区別できろよまったく
>>799 ぼけ先生、自演ご苦労様です!プゲラッチョ
# カッコイイー 人間どんなに落ちぶれても、ぼけ先生みたいになりたいね
# 空白あけることとscanfの間違いを認めることくらい区別できろよまったく
C言語で、質問が・・・・ すいません。部屋間違えました・・・
非科学的ぼけ発生中
このスレはPart 84で終わりました
ほんとは前スレで終わるはずだった
805 :
デフォルトの名無しさん :04/07/12 23:09
非科学的ぼけはHSP信者
前スレは綺麗に終わったのに馬鹿がスレ立てたせいでこんな展開に・・・
次スレはC言語なら ぼけ に聞け! にしよう
次スレは C言語なら ぼけ に聞く! にしよう
scanf goto pointer buf ネタは尽きた (・∀・)埋め!
はえーよ!
812 :
デフォルトの名無しさん :04/07/13 09:24
上の方にちょこっと書いてあった mblen ってどういう使い方するんでしょうか? man みてもよくわかりません。コード(sjis,euc,utf)がいったいなにになるのかとか? 具体的にどのように使われるのか偉い人教えてください。
813 :
デフォルトの名無しさん :04/07/13 09:37
> mblen ってどういう使い方するんでしょうか? man みてもよくわかりません。 man読め
>>813 オレもだが、わかんないヤシはでてこなくていいよ。
>>812 Shifted JIS だとか日本語EUCだとか意識せずに
複数バイト文字列を処理したいなぁ、とか思ったときに使う。
(実際の文字コードは実行時の環境で決まり、
自動判別してくれるわけではない)
例:
//
// マルチバイト文字列の文字数
int mbstrlen(const char *strbuf)
{
int ct = 0, len;
while ((len=mblen(strbuf, MB_CUR_MAX)) > 0) {
ct++; // 文字数カウント
strbuf += len; // 次の文字
}
if (len < 0)
return -1; // 文字列誤り
return ct;
}
len = mblen("あいうえお",5); だとlenは4になるのかな?
やれや池沼
いや、面倒だし。
だから池沼って言われるんだ
いや、あんたに池沼とか言われても、どうってことないし。
どうせ誰に言われてもどうってことないんだろ。池沼なんだから
822 :
デフォルトの名無しさん :04/07/13 13:27
循環リストはどのようなアプリケーションに向いているのですか?
Cスレをデジャヴのループに陥れるのに向いています。