掲示板ランキング  スーツ・タキシード(男の子)  帽子  手袋  マフラー  レオタード  エプロン  子供和服


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.6739

cat
投稿者---nomo(2006/11/17 17:34:34)


このプログラムでファィルをコピーしました。
str[128]の数についてですが、

約60行のテキストファイルを作り、改行せず2行半に渡る文も混ぜました。


ですが明らかに127文字以上読み込んでますがなぜでしょうか?


#include<stdio.h>
#include <stdlib.h>
#include<string.h>
int main(int argc,char *argv[])
{
    FILE *fp,*fp1;
    char str[128];  
    
    if((fp=fopen(argv[1],"r"))==NULL){
        printf("no open");
        exit(1);
    }
    
    if((fp1=fopen(argv[2],"w"))==NULL){
        printf("no open");
        exit(1);
    }
    
    while(!feof(fp)){
        fgets(str,127,fp);    
        fputs(str,fp1);
    }
    
    fclose(fp);
    fclose(fp1);

return 0;
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> fgets 6740 nomo 2006/11/17 17:36:12
<子記事> Re:cat 6741 nop 2006/11/17 18:05:48


No.6740

fgets
投稿者---nomo(2006/11/17 17:36:12)


すいません。
タイトルを間違えました。



この投稿にコメントする

削除パスワード

No.6741

Re:cat
投稿者---nop(2006/11/17 18:05:48)


>ですが明らかに127文字以上読み込んでますがなぜでしょうか?

これは、どこの時点での話ですか?
また、127文字以上を読み込んでいる事は、
どの様に確認しましたか?


この投稿にコメントする

削除パスワード

No.6742

Re:cat
投稿者---nomo(2006/11/17 18:39:18)


以下のようなテキストを別のテキストにコピーできました。

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb



ccccccccccccccccccccc
dddddddddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
fffffffffffff
g
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

                           nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

     opooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa


aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

aaaaaaaaaaaaaaaaaaaa

aaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb



この投稿にコメントする

削除パスワード

No.6743

Re:cat
投稿者---yoh2(2006/11/18 00:00:08)


こういうことですか?

1. fgets()では127文字しか読み込まないようになっているはず。(あのソースでは、実は126文字までですが)
2. テキストファイルには1行に127文字を超える行を書いてある。
3. すると、127文字までしか表示されない行があるはずだが、どの行も全文出力している。これはおかしい。

もしそうなら、fgets()の仕様の勘違いです。
fgets()は、行を読み込み切れない場合、その行の残りを読み捨てるのではなく、
単にその場で読み込みを中断して戻ります。
そのため、続いてfgets()を呼び出すと、読み込み切れなかった続きから読み込みが再開されます。

実験用コード: (test.txtに abcdefghijklmnopqrstuvwxyz とでも書いてから実行してみて下さい)
#include <stdio.h>


int main()
{
    FILE *in;
    char buf[5];
    int n = 0;

    in = fopen("test.txt", "r");
    if(in == NULL){
        perror("test.txt");
        return 1;
    }

    while(fgets(buf, sizeof(buf), in) != NULL){
        printf("%d: %s\n", ++n, buf);
    }

    fclose(in);

    return 0;
}



この投稿にコメントする

削除パスワード

No.6748

Re:cat
投稿者---nomo(2006/11/20 21:39:16)


すばらしい回答ありがとうございます。
おっしゃるとおりです!
すごくよく解りました!
どうもありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ