C言語なら、俺に聞け! <7>
■ このスレッドは過去ログ倉庫に格納されています
0001sageジョブス
NGNGあちこちの言語に手を出したが結局極めたのはC言語だけだった。
大体のことなら分かるからオレに聞け。
だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・前スレ C言語なら、オレに聞け! <6>
http://piza2.2ch.net/test/read.cgi/tech/999617524/
0577デフォルトの名無しさん
NGNGそれを消さずそのままで、bbb.txtファイルを作るにはどうすれば良いのでしようか?
結果として/hoge/の中に内容の同じaaa.txtとbbb.txtができるようにしたいのです。
環境はWindows95です。
Win32API関数を使わないで、出来ますでしょうか?
ただ、コマンドラインを使ってcopy aaa.txt bbb.txtを使うのは嫌だな。
よろしくお願いします。
0578もう一つなんすが
NGNG----------------------
山田,東京,エンジニア,車,\n
河田,神奈川,経理,音楽鑑賞,\n
ダイエル,神奈川,特殊部隊,音楽鑑賞,\n
このような可変長レコード(各データはカンマで区切られているだけで最大255文字と
いう以外は制約無し)のラインシーケンシャルのテキストデータファイルがあります。
このようなファイルを操作するに当たって、fseekのような関数を作りたいと思います。
�@ファイルポインタを○○行目に移動する関数を作るにあたって、何か妙案はありますか?
よろしくお願いします。
0579575
NGNGらじゃ。
私の場合、コンパイル時エラーの最大の要因はスペルミスです。ノリノリでコードを書いてると、よく
一文字順番が入れ替わったりするんで。リファクタリングしてるときには、コードまとめて Cut & Paste
だから間違いようがないんですけどね。
私はコンパイラが発見できるバグは怖くないと思ってるので、コンパイル時エラーはあまり気にして
ません。コンパイラが発見できないロジックミスの方は怖いので、assert() 埋めたり関数単体のテス
トは綿密にやります。
コードの行数を聞いたのは、この前呼んだ昔話(root から / へのメッセージ、だったかな?) が気に
なったからです。UNIX 黎明期の頃は CPU 利用時間で課金されていて、何度もコンパイルすると
- 金の無駄遣い
と言われたそうで。いまだと、そんな当時の常識は捨ててもいいよなと思ってて、それが背景にあっ
たので聞いてみた次第。
0580ことりんぐ
NGNG0581デフォルトの名無しさん
NGNG聞きたいんですけど、2ch てどうなんでしょうか?
……という質問と同じぐらい漠然としていて、なんとも答えようがないと思われ。用途や比較対象などを
もう少し絞り込んでみては?
0582ことりんぐ
NGNG実際、基本的なことを使えるようになりたいと思っているんですが、どうしたらいいんでしょうか?
Cygwinがどのへんまで同じ物なのかわかりませんし・・・
0583デフォルトの名無しさん
NGNG2ちゃんはヲタの集まり・・・
危険すぎる・・・
0584デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi?bbs=unix&key=1003358904
ところで、なんでこっちスレに書き込んでるのか、
小一時間問い詰めさせてくれよ。
0585デフォルトの名無しさん
NGNG(n行->m Byte)の変換テーブルを作ればいいかと。
別にindexファイルを作るのが吉。
作れないなら、起動時にcsvファイルを全部読んだりして、
テーブルを作る必要がある。
0586デフォルトの名無しさん
NGNGANSIの関数はつかっていいんだよな?
aaa.txtとbbb.txtをfopen()で開いて、aaa.txtの内容を読み込んでbbb.txtに書いていけば。
fopen()はファイルがなければ、勝手に作ってくれる。
0587577=588
NGNG>(n行->m Byte)の変換テーブルを作ればいいかと。
>別にindexファイルを作るのが吉。
ありがとうございます。
Perlとかだと何行目っちゅうデータが簡単に取れるんですが、indexファイルですか。
頑張ります。
>>586
ありがとうございます。msdosだと、copyコマンドで簡単にファイルの複製ができますよね。
だからANSIの関数であるかと思ったんですが、見つけられずに立往生しておりました。
助かりました。
ありがとうございました。
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG0590588
NGNG0591デフォルトの名無しさん
NGNGCygwinはカーネルがない
(Windowsの資源を流用。あえていえばcygwinのdllが)
0592__
NGNG"速い安い旨い"アルゴリズムを教えて下さい。
0593__
NGNG0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNGそれはアルゴリズムの問題じゃないと思う。
0596デフォルトの名無しさん
NGNGextern void foo(void)ってどう違うの?
またどう使い分けるの?
0597デフォルトの名無しさん
NGNG上は定義か宣言か、それだけじゃ区別つかない。
下は宣言。どこかに実体が定義されている、という宣言。
使い分けは、extern を書いたほうはヘッダにまとめる。くらいかな。
0598デフォルトの名無しさん
NGNGchar szHostName[256];
とか文字列を格納する変数名の頭に付く『sz』とは何の略なんでしょうか?
0599デフォルトの名無しさん
NGNGだっけ?
0600デフォルトの名無しさん
NGNGmmap、かなぁ。開くったって、同時に書き込みは出来ないわけだし。
>>598
Zero terminated String がどうこう、って話をその昔
聞いたことがありますが。
0601デフォルトの名無しさん
NGNGsz:string with zero terminated
'\0'で終了する文字列の略
0602デフォルトの名無しさん
NGNG「ハンガリアン記法」で検索してみるといいと思うよ。
0603598
NGNGみなさん、レスありがとうございました
0604デフォルトの名無しさん
NGNG宣言とかどうすればよいのでしょう。
教えてください。
0605デフォルトの名無しさん
NGNGC++ だけど、
int func(int n = 0){
return n;
}
とすれば、func() なら 0 が返るし、func(777) なら 777 が返る。
0606デフォルトの名無しさん
NGNGman stdarg
0607デフォルトの名無しさん
NGNGvoid f(int x, ...)
どうにかして引数の数を得なければいけないけど
(printfみたいな書式指定でも、個数を指定してもok)
0608デフォルトの名無しさん
NGNGman stdarg or varargs.h
0609604
NGNGヘッダの宣言のほうで
int func(int n = 0);
ソースのほうは
int func(int n)
{}
でいけました。
ありがとうございました。
0610604
NGNG0611デフォルトの名無しさん
NGNG....
0612デフォルトの名無しさん
NGNG0613名無しさん
NGNG入出力したり、演算したデータを書き込む操作をVBAの
他にもC/C++で処理してみたいのですが、参考になる
プログラムまたはサイトはありませんか?
因みにCのコンパイラはBorland社のフリーソフトです。
0615デフォルトの名無しさん
NGNG↓
クソヘッダが出来ました
↓
ヘッダ作るのヘッダクソやなあ
学校の宿題で「C言語イレギュラーを考えて来い」とのお達し。
これでいきたいと思います。
0616デフォルトの名無しさん
NGNGググールいって
csv open close #include
で検索するのはどうか
0617デフォルトの名無しさん
NGNGstaticで宣言されてないなら、Cの関数は外部リンケージをもつから
どっちでもいっしょ。お好きなほうをどうぞ。
0618デフォルトの名無しさん
NGNGすいません。下のソースをコンパイルするとエラーが出ます。
なんででしょうか。教えて下さい。。。。
#include <stdio.h>
void nfunc(char *s){
char k = *(s);
*(s) = *(s+1);
*(s+1) = k;
return;
}
main()
{
//int i;←ここだとOK。
char x[7] ="tinnpo";
nfunc(x);
int i;//←ここだとだめ。
for (i=0;i<50;i++){
printf("%s",x);
}
}
0619デフォルトの名無しさん
NGNG変数はブロックの先頭でしか宣言できません。何故かと問われても、そういう決まりですとしか。
0620デフォルトの名無しさん
NGNGたとえば変数aにhogehogeと入力したとき
input:input:input:
とループしてしまいます
これをループしないようにするには
どうしたらよいのでしょうか?
int a;
while(1){
printf("Input:");
a=getchar();
if(a=='1'){
break;
}
}
0621デフォルトの名無しさん
NGNG即レスありがとうございます!
すると変数宣言を全部頭に固めとけってことですね。
0622デフォルトの名無しさん
NGNGwhile(1){
って条件が常に真で無限ループですよね。
んで"hoge"!=1だから抜けないんじゃ。。。。
0623デフォルトの名無しさん
NGNGどうしてループするのかわからないならここで訊く前にK&Rを死ぬほど読め。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNGバッファがたまっていると、バッファを吐き出すまで、コンソール
入力が無くても値を返してきます(自動的に関数が終了してしまう)
多分、>620の関数だと、文字列数+1の「input:」を画面に
出力されるのではないでしょうか?
多分と思われる正解は
#include <stdio.h>
#include <string.h>
main(){
char buf[BUFSIZ];
while(1){
printf("Input:");
gets(buf);
if( strcmp( buf, "end" ) == 0 ){
break;
}
}
}
こうかな?
0626620
NGNGレスありがとうございます
質問の仕方がわるかったみたいです
わざとhogeとか入力して
ループするようにしたとき
ループするのが1回ではなくて
input:input:
と複数回ループしてしまうのは
どうしてですか?
0627デフォルトの名無しさん
NGNGゼロからなのですが、まずC言語とやらを学ぶのがいいんですか?
教えてください。
0629デフォルトの名無しさん
NGNGなんで1回しかループしないと思うのか。
どうしてループするのかわからないならK&Rを死ぬほど読め。
0630デフォルトの名無しさん
NGNGint main(void)
{
int sintyou;
int taijyuu;
double meter_sintyou;
double bmi;
printf("身長入れてください>");
scanf("%d,&sintyou");
printf("体重を入れてください>");
scanf("%d,&taijyuu");
meter_sintyou=/100.0;
bmi=taijyuu/(meter_sintyou*meter_taijyuu);
printf("あなたのBMI指数は%fです\n",bmi);
printf("判定:")
if(bmi<18.5){
printf("やせすぎだYO\n");
}else if(bmi<25){
printf("標準体重\n");
}else if(bmi<30){
printf("ちょっと肥満\n");
}else{
printf("デブ\n");
}
return 0;
}
なんか完璧なのにエラーがでるのだけど、どう書き換えたらいいかな?修正してください
0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNGなんてネタだな。
0634デフォルトの名無しさん
NGNG結果がおかしいとか以前に、これじゃコンパイル通らないぞ。
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNG正解も書いてくれませんか?間違えと見比べるので。お願いします
0639遭難中
NGNGstruct bodyStr readbody(int i){
struct bodyStr body;
int t;
scanf("%s%s%s%s%s%s%s%s%s%s%s",
body.size.height,body.size.neck,body.size.arm,body.size.waist,body.size.inseam,
body.color.hair,body.color.eyes,body.color.skin,body.shape,body.age,body.sex);
temp.number=(t+1 ? ++i : 0);
return body ;
}
なんですが、プログラムがここにかかると止まります。
原因はなんでしょうか?
もしかして、ここが原因ではない?
0640遭難中
NGNGではなく
body.a=(t+1 ? ++i : 0);
の書き間違えでした。
でもプログラムは止まります。
0641デフォルトの名無しさん
NGNGbody.size.heightとか、scanfに渡してる変数は、char*になってるか?
数値型だと、動かんよ。
つか、scanfをこんな使い方したら、正しく動いても、ミスらないで入力
するのは至難のワザ。
(リダイレクトで入力すんのか?)
0642デフォルトの名無しさん
NGNGあと
scanf("%s %s %s %s %s %s %s %s %s %s %s",
%s の間にスペース入れないと、ダメっぽい。
0643デフォルトの名無しさん
NGNG関数内に出てくる t が初期化されてないけど大丈夫?
何が入ってるか分からないよ。
0644遭難中
NGNGプログラム全部のせて指摘していただきたいのですが、そうしたら、丸投げになってしまうし、
どうすれば〜(泣)
0645遭難中
NGNG0646デフォルトの名無しさん
NGNGですか?%sはNULLまでを表示する型指定なので、もし数値を表示したいのであれば、
%dで書かなきゃランタイムエラーでますぜ。
0647646
NGNG0648遭難中
NGNG0649643
NGNGmain()の最初でいきなりiが初期化されてないよー。
初期化してない変数は0が入るのだと勘違いしてるのかも知れないけど、
関数内で定義した変数の初期値は「不定」だからね。
0が入ってるかも知れないし-1000かも知れないし256かも知れない。
0650遭難中
NGNGしかし結果はかわらず・・・。
0651646
NGNG現在確認中
0652遭難中
NGNGちな次のようなプログラムを作れ。
(1)洋服用身体データ構造体を定義する。タグ名をbodyStrとする。
識別番号
サイズ: 身長, 首回り, 腕の長さ, 胴回り, 足の長さ
色 : 髪, 目, 肌
体型 :値を(太め,標準,細め)の3種類とする。
年齢
性別
識別番号以外のデータは文字列に入れる。文字配列のサイズは(データを見て)適当に決
める。
(2)その構造体の配列を用意する。配列のサイズは全部のデータが収容出来るだけとする
。
(3)データを一人分読む関数readBodyとデータを一人分書くwriteBodyを書く。readBodyは
bodyStr
構造体を戻し,writeBodybodyStr構造体を引数に取るものとする。 みに今回のこの問題は
0653643
NGNG未初期化ポインタをdo {} while()の終了条件の中で参照してるから、
readbodu()から正しく戻ってきてもここで死にますな。
0654遭難中
NGNGどうも実行がうまくいかなくて・・・。
0655遭難中
NGNGありがとうございます。
0656遭難中
NGNGdo{
body[i]=readbody(num);
}while(body[i++].a);
if(argc-1){
writebody(body[(argv[1])-1]);}
else
for(j=0; j<i-1; j++)
writebody(body[j]);
指摘個所をこのように変えてみました。
dataを破棄しました。これを実行したら、PC自体がフリーズしてしまいました、
0657デフォルトの名無しさん
NGNG0658646
NGNGそれともファイルとかの外部入力なの?
0659遭難中
NGNGそれ用のファイルは
http://popup.tok2.com/home/tnao/body.dat.txt
です。
コマンド行に番号が指定されていれば、その識別番号のデータを出力するようにして、
なにも指定がなかったら全部のデータを出力するようにします。
a.out 3 <body.dat
または
a.out <body.dat
と入力するんです。
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG無限ループかつ data[i] によってデータ破壊されてると思われ。
0662遭難中
NGNG改善策を教えていただきたいのですが…
0663遭難中
NGNG0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNGこれ、処理を分解して、もっと分かりやすくしようよ。
0666デフォルトの名無しさん
NGNG>writebody(body[(argv[1])-1]);}
writebody(body[atoi(argv[1])-1]);}
# だんだんlisp化してきてるな...
# > body[i]=readbody(num); は絶対に俺には思いつかん...
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNGできればLinxu用のシンプルなやつお願いします。
SubjectとBodyがあればそれだけで十分です。
実用性と勉強を兼ねて吟味したいのです。
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNGUCB Mail とか MH のソース読めよ。
仕事として依頼するなら最低で 0.5 人月要求するが?
0671デフォルトの名無しさん
NGNG0672遭難中
NGNG回避の方法はどうしたらいいんでしょう?
0673デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNGそんなに複雑なものでなくていいのです。
例えば100行のブラウザのような本当に基本的なものでよかったのですが・・・・
とりあえずありがとうございました。おさがわせいたしました。
0675デフォルトの名無しさん
NGNGgets(s);
なのに、なんで1文字を入力するときは
s=getchar();
なんですか?
getchar(s);
ではだめなんですか?
0676デフォルトの名無しさん
NGNGそもそもこれがうまく動かないだろう・・・
関数struct bodyStr readbody(int i)の最後で
return body;
とやっても、関数struct bodyStr readbody(int i)内の
struct bodyStr body;
のアドレスがdata[i]に代入されるだけで、このアドレスの指す
データは関数struct bodyStr readbody(int i)が終了するとともに
消滅してしまうからね
■ このスレッドは過去ログ倉庫に格納されています