[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 00:45 / Filesize : 237 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 23



1 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:49:22 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 22
pc11.2ch.net/test/read.cgi/tech/1196489491/

教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 101
pc11.2ch.net/test/read.cgi/tech/1197132472/

552 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:24:50 ]
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
 char *position, line[80];
 FILE *fp;
 int counter=0, num, maxbuf=79;
 if ( argc == 1) {return 1;}
 fp= fopen(argv[ 1], "r");
 if ( !fp) {return 1;}
 position= line;
 while ( fgets( line, maxbuf, fp)) {
  position= line;
  num= strlen(line);
  num-=4;
  while (( num > 0) && ( !memcmp( position, "goto", 4))) {
   position= position +3;
   ++counter;
   num-=3;
   ++position;
   --num;
  }
 }
 fclose( fp);
 printf( "%d goto \'s\n", counter);
 return 0;
}

たぶんこういうこと

553 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:40:09 ]
まちがえた、・・・まぁいいか・・・

554 名前:デフォルトの名無しさん [2008/01/05(土) 01:12:12 ]
Javaを半年ほどやってCを最近始めた素人です。

同じソースファイル内でも関数の定義位置が違うだけで、
コンパイラが、関数宣言ないよー。という警告をするのが、
いまいち慣れないのですが。

static宣言な、ファイル内スコープの関数なんかでも、
プロトタイプ宣言ってきちんとしたほうが良いのでしょうか。

手元にあるC言語入門だと、main関数を最後のほうに、
定型的な計算用の関数等を、頭のほうにもってきて、
プロトタイプ宣言を書かないようしているのですが、
皆様はどういった書き方をしておられるのでしょうか・・・。

555 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 01:14:41 ]
>>554
基本的に、ソースファイルの書き方は一貫性が大事だと思っている。
だから、一貫性を持って読みやすければそれでOKだ。

556 名前:デフォルトの名無しさん [2008/01/05(土) 01:29:27 ]
>>554
おぃ… どのportでaccessしろと云うのだ?

557 名前:デフォルトの名無しさん [2008/01/05(土) 01:51:07 ]
www.microsoft.com/japan/msdn/vs/vcsharp/mth_lexicograp.aspx
から.msiインスコしたまではいいですが、ここからどうすればアプリとして起動できますか?
よく分からないままMS Visual C#2008入れました。
最終的にやりたいのは、nCrで任意のnとrを最初に指定して、.txtファイルで1行毎に記述した多数の序数x(1≦x≦nCr)を組み合わせ化して別の.txtファイルにsaveすることです。

558 名前:デフォルトの名無しさん [2008/01/05(土) 02:09:33 ]
方向音痴な初心者です
因みに… '/usr/share/doc/man1/或.zg
個人の計算では恐らく'/usr/share/doc*
全てを読み込む様に為っていた筈…

559 名前:デフォルトの名無しさん [2008/01/05(土) 02:20:37 ]
最後の状態…
1・再起動がBIOSに到達せず再起動…
2・停止がBIOSに到達せず停止の筈が再起動…
3・RANを切らないと停止せず…

560 名前:デフォルトの名無しさん [2008/01/05(土) 02:25:06 ]
斯様に考えてもfile内に.pngを埋め込むのは無理と考えerror_fileを削除の末…
此の顛末…



561 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:31:08 ]
次の質問をどうぞ

562 名前:557 [2008/01/05(土) 02:42:49 ]
see me(>>557) plz!

563 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:55:06 ]
>>557>>562
ここはC#のスレではありませんよ

564 名前:557 [2008/01/05(土) 03:49:11 ]
>>563
Spcially sorry, sir.

565 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 07:32:27 ]
>>554
> 手元にあるC言語入門だと、main関数を最後のほうに、
> 定型的な計算用の関数等を、頭のほうにもってきて、
> プロトタイプ宣言を書かないようしているのですが、
> 皆様はどういった書き方をしておられるのでしょうか・・・。

基本的に読むときのことを考えて書く。
文章は上から下へ向かって読む。
だからプロトタイプ宣言も書いてmainの下に呼び出す関数を書く。

よく見るif (0 == a) みたいなやり方(=を書き間違えるミスを防ぐやつね)
もバッドノウハウだと思う。

566 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 09:07:16 ]
>>565
最後の2行は同意するが、関数をボトムアップで書くのは臨機応変でありだと思う。

567 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:07:08 ]
>>565

> よく見るif (0 == a) みたいなやり方(=を書き間違えるミスを防ぐやつね)
> もバッドノウハウだと思う。

なんで?
他にいい方法ある?

568 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:07:35 ]
はい、次の質問どうぞ〜

569 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:14:55 ]
>>565
>基本的に読むときのことを考えて書く。
>文章は上から下へ向かって読む。
>だからプロトタイプ宣言も書いてmainの下に呼び出す関数を書く。
うーん・・・微妙。
結局main関数がファイルの一番上に来るわけでもないし、
mainを最初に持ってきたからって可読性は上がらないと思う。
コード全体で一貫性があればケースバイケースどころか
趣味の範疇じゃない?

570 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:18:41 ]
>>567

最近のコンパイラなら警告を出すはずだし、lintもある。
それに、
 if (a = b)
は防げない。

-Wall で出る警告をすべて潰すか、lintを使う習慣をつけたほうが良い。




571 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:19:25 ]
Cに慣れると関数がボトムアップに並んでないと不自然に見えてくる。

572 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:32:24 ]
>>555で終わってるネタ

573 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:32:49 ]
>>569

おれは >>565に同意。
main関数を一番下に持ってくるのは、プロトタイプ宣言がなかった頃の
古い習慣を引きずってるだけだったはず。

>結局main関数がファイルの一番上に来るわけでもないし、

これはその通りだけど、プロトタイプ宣言を長々と書くことは少ないし、
たとえ長くなっても関数ブロックがどこから始まるかはすぐわかるので、
main関数が上にあるはうが見つけやすい。

あと、呼び出す関数の引数などを見たいとき、
プロトタイプ宣言が一箇所にまとまっているほうが見やすいと思う。

まあ、これはコーディングスタイルだから、強くは主張しないけど。


574 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 11:27:15 ]
>>573
プロトタイプ宣言のなかった頃という実例を提示してくれ。
宣言がなかったら外部の関数は一切まともに呼べないと思うのだが。

575 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 11:28:40 ]
> mainがどうとか
最近はフリーのでもエディタが強いからなぁ。
気にならなくなったし気にしなくなった。

576 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 13:31:36 ]
10個の配列に入っている数それぞれが
全て異なるってどういう風に書けばいいんでしょうか?

577 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 13:37:21 ]
int array[10];
for (int ic = 0; ic < sizeof(array) / sizeof(* array); ++ic) array[ic] = ic;

578 名前:576 mailto:sage [2008/01/05(土) 13:45:39 ]
追記すいません。
10個の配列には既に数字が入っていて
条件式でかくならどうすればいいですかね?

579 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 13:58:18 ]
ループでまわすか45個条件式書くか、好きなほうにしろよw

580 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 14:23:57 ]
無駄に再帰

int unique(int array, int n){
 int i;
 if(n <= 1)return 1;
 for(i=1; i<n; ++i)
  if(array[0] == array[i])
   return 0;
 return unique(array+1, n-1);
}



581 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 14:29:42 ]
要素数intを再帰するのはちょっと勇気がいる。「スタックはもう0よ」に気をつけて。

582 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 14:34:42 ]
要素10個の配列を想定した再帰でスタックの心配とかw

583 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 14:35:36 ]
>>581
そこで最近覚えた末尾再帰の最適化ですよ。

584 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:10:46 ]
"入っている数"があまり大きくない数字(例えば0〜9999とか)なら、
配列(例なら10000要素)を用意して重複チェックするという手もある
10回ループすればわかる

585 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:56:01 ]
ソート済み配列なら楽なんだがな

586 名前:576 mailto:sage [2008/01/05(土) 16:39:31 ]
>>584ので
わかった気がします。
ありがとうございました

587 名前:584 mailto:sage [2008/01/05(土) 17:50:36 ]
あぁ 577 にもヒントが
見落としていたよorz


588 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:59:25 ]
mainなんて最後に読むから下にあったほうが邪魔にならなくていいな

589 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:48:37 ]
mainから読まないと理解できない俺はorz

コメント豊富ならいいが、
そうでなければ順を追わないと分かりづらい……

590 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:56:00 ]
どうせ上から下に綺麗に順に追って読めるわけじゃないから、どこにmainがあってもいいや



591 名前:554 mailto:sage [2008/01/06(日) 01:04:01 ]
レス有難う御座いました。
結論としては>>555なのでしょうが。

自分はIDE使っていて、
>>573さんの様なスタイルがやりやすそうです。

コンソールでUnixプログラムとかを書ける様な方だと
また意見も変わってくるんでしょうかね…。

>>571とかも参考になります。
皆様ご意見有難う御座いました。

592 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 04:10:09 ]
すいません、超初心者なんですが判らなくなったので教えていただけませんか?
今アクセスカウンタを作ろうと思って、まずは簡単に動く物をテストで作ってみ
ようかと思ってるのですが、思った動作をしてくれません・・

ipアドレスをゲットして、そのipアドレスから連続でアクセスがあった場合カウンタ
が回らないようにしたいです。超初心者の自分なりに書いてみたのですが、同じipから
のアクセスでもカウンタが回ってしまいます。ソースは

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
main()
{
long i;
FILE * fp;
char *test,*ip,*count="count.dat",*addr="addr.dat";

test = getenv("REMOTE_ADDR");
fp = fopen(addr,"r+");
fgets(ip,30,fp);

if(ip==test){
printf("test");
fclose(fp);
}



593 名前:592 mailto:sage [2008/01/06(日) 04:11:42 ]
else
{
fprintf(fp,test);
fclose(fp);

fp=fopen(count,"r+");
rewind(fp);
fscanf(fp,"%6ld",&i);
i++;
rewind(fp);
printf("Content-type: text/plain\n\n\0");

fprintf(fp,"%06ld",i);
printf("%06ld",i);

fclose(fp);
}
}


こんな感じです。多分どっか物凄く適当な事をしてる部分があると思うのですが
自分ではぜんぜんそれがどこか判りません・・・

誰か教えてください・・・

594 名前:592 mailto:sage [2008/01/06(日) 04:13:28 ]
あー15行目の
printf("test");
はif文に入ったかどうかチェックする為に書いた物で意味はありません。

595 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 04:19:46 ]
基礎からやった方が良いと思うけど、とりあえず。

・ipは只の未初期化のポインタ
・文字列の比較は==ではしない

596 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 04:19:57 ]
 >>592
char* ip; で
fgets(ip,30,fp); は臭う

if(ip==test) ポインタ比較してどうする
文字列比較は strcmp (string.h)
全部読んでないが、ここら辺。

597 名前:592 mailto:sage [2008/01/06(日) 04:35:19 ]
>>595-596
こんな時間なのに即レスありがとうございます。
もう少しポインタの勉強してきます・・・

598 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 04:42:36 ]
ポインタの前に配列を

599 名前:592 mailto:sage [2008/01/06(日) 04:56:42 ]
あぅあぅ・・
眠いせいか全く頭まわらず、未だ解決の糸口が掴めません・・今日はもう寝ます。

もしよかったら592の鳥頭でも判るcの初心者向け解説サイトなんかあったら教えていただけますか?orz
よく寝て頭冴えてる時にもう1度チャレンジします。

600 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 05:09:17 ]
>>599
ttp://www9.plala.or.jp/sgwr-t/



601 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 05:09:35 ]
>>592
char *test,ip[128],*count="count.dat",*addr="addr.dat"; にして

if(ip==test){ は
#include <string.h> を追加して if(strcmp(ip, test) == 0)だな

あと、printf("Content-type: text/plain\n\n\0"); の最後の\0は要らない

サイトより、しっかりした一冊を読んだほうが為になると思う

602 名前:592 mailto:sage [2008/01/06(日) 05:55:21 ]
眠い目こすりながら"もうちょい・・もうちょい・・"ってやってたら出来ました!
600さん601さんありがとうです。ほぼ601さんの書き込み通りで出来ました。

else
の後に
rewind(fp);
が無かったのでaddr.datが追加書き込みで上手く働かなかったのだけ
なんとか自力で見つけて修正しました。ホント有難うです!

603 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 10:25:50 ]
>>574

つ homepage3.nifty.com/ryuz/c/about_ansi.html


>宣言がなかったら外部の関数は一切まともに呼べないと思うのだが。

外部の関数はextern宣言で呼ぶ。
古いソースを見ると、こんなのを見かける。
#ifdef __STDC__
int func(int arg1, char *arg2);
#else
int func()   /* これが古いスタイル */
#endif

今はもう過去の遺物だが。


604 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 10:36:54 ]
まだやんの

605 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:26:34 ]
>>603
まさか、その「古いスタイル」という奴は宣言ではないとでも?

606 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:42:43 ]
昔はいきなり呼べたような。
そのためmath.hをインクルードしてないと引数がintになったりしてたような

607 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:45:03 ]
今でもいきなり呼べるよ

608 名前:603 mailto:sage [2008/01/06(日) 12:59:23 ]
>>605

ごめん、間違えた。
#ifdef __STDC__
extern int func(int arg1, char *arg2);
#else
extern int func()   /* これが古いスタイル */
#endif

こうだった。


609 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 14:23:04 ]
>>608
セミコロン要らないの?

610 名前:603 mailto:sage [2008/01/06(日) 15:20:15 ]
>>609

もちろん要るorz




611 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 16:17:55 ]
まだやってたのか。

>>605
とりあえず「プロトタイプ宣言」では無いと思う。

>>606-607
>引数がintになったりしてたような
戻り値とちゃうか?
んで、暗黙の戻り値の型はC99でダメにならなかったっけ?

612 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:17:39 ]
>>611
古い仕様やANSI非準拠の環境ならプロトタイプ宣言なくても関数呼び出しが可能。
戻り値は省略された場合intとみなす(これは確か規格)
引数はそこに関数呼び出しがあるならプロトタイプ宣言がなくとも予測できる。

int func();// ←プロトタイプ宣言
int a = func( 5, "hoge" );
と書かれていればfuncの引数が予測できる。


613 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:22:03 ]
予測も何も、そのままスタックに積んで取り出すだけでしょ
あってる限り問題は出ない

614 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:32:58 ]
コール規則が複数あるような場合に嵌るだろ

615 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:47:37 ]
プロトタイプを人間が確認してるようなもんだな

616 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:08:31 ]
>>612
なんか色々とウサンクサイな・・・

617 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:50:50 ]
まぁ、math.hをインクルードせずにprintf("%g\n", log(1))してみたまえ。いいもんだ。

618 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:04:47 ]
%gってなんすか?教えてくだしあ

619 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:07:50 ]
printfでぐぐれ

620 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:08:20 ]
manコマンドしか見てなかったよ



621 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:09:06 ]
ごめんうそ

622 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:21:22 ]
普通に、man printfしても出てくるでしょうが。

623 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:21:17 ]
プロトタイプ宣言。
200〜300行程度のプログラムならなんとでもなるね。
問題は複数の Cファイルに分割しなければいけない時。
ファイル数が多くなり、extern 関数呼び出しが多くなった時
プロトタイプ宣言が有る場合と無い場合とではバグ出現回数が
大幅に違ってくる。
プロトタイプ宣言する事を癖にした方が良いよ。

624 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:22:41 ]
ますます話が迷走を深めてまいりました

625 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:26:46 ]
>ファイル数が多くなり、extern 関数呼び出しが多くなった時
>プロトタイプ宣言が有る場合と無い場合とではバグ出現回数が
>大幅に違ってくる。
ソースキボン

626 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:42:32 ]
>>625
プロトタイプ宣言がない場合、関数の引数の数と型を合わせるのはプログラマの責任になる。コンパイラはチェックしない。
ファイル間の膨大な数の関数と呼び出しで、それを完璧にやれる人はまずいない。

627 名前:623 mailto:sage [2008/01/07(月) 00:38:00 ]
>>625
ソースなんてないよ。 実体験。
まだ経験してないのであれば...幸せなのか天才なのか、はたまた...

628 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:42:39 ]
ソースが無いのにどうやって体験したんだとか勘違いした俺はどうすれば

629 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:02:06 ]
>>628
俺も一瞬思ったw

>>627
昔はソース書いてからコンパイラに吐かせてプロトタイプ作ったりもしたが
今はIDEもあるし、ほぼ同時に作るべ、
複数人でやるならソースとヘッダの提供は不可欠だしな

630 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:04:46 ]
627と628の言うソースは違うものを指していると思われ。




631 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 01:06:02 ]
野暮だな

632 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 03:51:40 ]
そんなことは628もわかってんのにな

633 名前:U [2008/01/07(月) 17:58:56 ]
質問です・・
if (a < (int)(a * 10) % 10){
a = (int)a+1;
}
(注:aはdouble型です)
上記のような文がプログラム中にあったとき、aを7.1なら8のように小数の切り上げをしたいんですがこれでなっていることになるのでしょうか?
小数の切り上げの方法を知っていたら教えてほしいです(標準関数を用いない方法で)。

634 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 18:08:15 ]
その前に標準関数を使って行けない理由を聞かせてもらおうか。

635 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 18:15:09 ]
条件がはっきりしないけど、0.9足して切捨てとか

636 名前:633 [2008/01/07(月) 18:22:42 ]
>>634
学校の課題なので使ってはいけないという制限があるんです。
>>635
回答ありがとうございます。
ですがすみません7.1の他にも小数があるのでそれ以外にも対応出来るようにしたいんです。

637 名前:633 [2008/01/07(月) 19:05:00 ]
if文の不等号を逆にしたら出力したい結果が無事でました!!
とても答えづらい質問ですみませんでした。

638 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 19:10:03 ]
は?

639 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 19:11:03 ]
解決したと思ってるんならそれでいいだろ。
詮索することはあるまい。

640 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 19:32:25 ]
「宿題の回答」としてはベストな回答だと思うよ。



641 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 19:35:31 ]
アホだろ

642 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 19:44:31 ]
(n + d) / d;
だめ?

643 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 19:47:15 ]
だめ

644 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 19:52:15 ]
適当に貼ってみる
#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[]){
double value=100.001;
long result;

if(argc>=2) value=atof(argv[1]);

result=value; /* この行と */
if(value>result) result++; /* この行 */

printf("%ld\n", result);

return 0;
}

645 名前:デフォルトの名無しさん [2008/01/08(火) 00:57:40 ]
101 287 345 391 348 287 391
371 388 39 388
88 404 150 428 404 387 145 299 404 197
320 397 141 342 428 429 206
36 214 412 88 176 214 346 210 406 308
250 26 112 370 328 328 284

こんな感じのデータファイル(data.txtの一部です)を2次元配列にいれるにはどうプログラミングすればいいですか?
改行とかスペースをどう考慮していけばいいかさっぱりです

646 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 01:07:31 ]
>>645
つ[fscanf()]

647 名前:デフォルトの名無しさん [2008/01/08(火) 01:10:12 ]
>>645
fscanfでも使ったら?

648 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 01:13:50 ]
>>645
for(i = 0; !feof(fp); i++){
do{
fscanf(fp,"%d",&date[i][j++]);
}while(fgetc(fp) != '\n');
}

649 名前:デフォルトの名無しさん [2008/01/08(火) 01:28:52 ]
いやfscanfも普通に改行コード読み飛ばすし

650 名前:デフォルトの名無しさん [2008/01/08(火) 02:15:50 ]
>>648
!feof(fp); って何ですか?



651 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 02:24:07 ]
 >>650
 つ www9.plala.or.jp/sgwr-t/lib/feof.html
ファイルの終端でない間ループする
0 != feof(fp)

652 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 03:13:53 ]
今年からやさしいCを買ってはじめたんだけどscanfがでてきてからいっきに面白くなってきやがったぜ!






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef