掲示板利用宣言

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

 私は

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

掲示板2

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

No.25011

strtok
投稿者---ぴよ(2005/12/29 21:41:16)


こちらのサイトのstrtokを参考にし、
自分なりに変更しました。
b.txtファイルには
神奈川,広島,岡山,横浜
東京都,青森,山梨,千葉
が入っています。
表示結果は
神奈川広島
岡山
横浜
東京都青森
山梨
千葉
となります。

神奈川広島と東京都青森
の元のデータは
神奈川,広島 東京都,青森
となっているにもかかわらず、
カンマのところで改行されません。
なぜでしょうか?いろいろと考えましたが、
分かりませんでした。
お手数ですが、よろしくお願いします。


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main(void)
{
    FILE *fp;
    char s[256];
    char *tp;
    if ( ( fp = fopen( "b.txt", "r" ) ) == NULL )
    {
        printf ( "入力エラー\n" );
        exit ( 1 );
    }
    while ( fgets ( s, 256, fp ) != NULL )
    {
        tp = strtok( s, "," );
        printf ( "%s", tp );
        while ( tp != NULL ) {
                tp = strtok( NULL,"," );
                if ( tp != NULL ) puts( tp );
        }
    }
    fclose( fp );
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:strtok 25012 wiz 2005/12/29 21:52:02
<子記事> Re:strtok 25013 shu 2005/12/29 22:03:28
<子記事> Re:strtok 25014 まきじ 2005/12/29 22:04:54


No.25012

Re:strtok
投稿者---wiz(2005/12/29 21:52:02)


>printf ( "%s", tp );
ぱっとみですが、ここに改行文字が入っていないから
だったりして。。。


この投稿にコメントする

削除パスワード

No.25015

Re:strtok
投稿者---ぴよ(2005/12/29 22:05:32)


>>printf ( "%s", tp );
>ぱっとみですが、ここに改行文字が入っていないから
>だったりして。。。
ありがとうございます。
おっしゃる通りでした。
いくら考えてもこんな単純なことも分からないかと
思うとなさけないです。
どうやったらそのように出来るように
なられるのでしょうか?


この投稿にコメントする

削除パスワード

No.25013

Re:strtok
投稿者---shu(2005/12/29 22:03:28)


>カンマのところで改行されません。
>なぜでしょうか?いろいろと考えましたが、
>分かりませんでした。
>お手数ですが、よろしくお願いします。

改行させるようになってないプログラムが、改行されると思いますか?
人に聞く前に、プログラムを良く読みましょう。
自分のプログラムには、自分でお手数かけましょう。


この投稿にコメントする

削除パスワード

No.25016

Re:strtok
投稿者---ぴよ(2005/12/29 22:26:18)


>改行させるようになってないプログラムが、改行されると思いますか?
>人に聞く前に、プログラムを良く読みましょう。
申し訳ありませんでした。
早くちゃんとプログラムを読めるようになりたいです。


この投稿にコメントする

削除パスワード

No.25020

Re:strtok
投稿者---shu(2005/12/29 22:52:30)


>>改行させるようになってないプログラムが、改行されると思いますか?
>>人に聞く前に、プログラムを良く読みましょう。
* 自分と相手との書きこみに違いがわかるようにここに改行。
>申し訳ありませんでした。
>早くちゃんとプログラムを読めるようになりたいです。
*
ひとつだけ、プログラムにも返信にも言えることですが、大まかな区切りに空行を入れることで、随分と読みやすくなります。

//
//  strtok()の使い方
//

//
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//
#define N   256

//
//
int main( void )
{
    FILE *fp;
    char s[N], *p;
    
    //
    fp = fopen( "b.txt", "r" );
    if (fp == NULL)
    {
        puts( "入力エラー" );
        exit( 1 );
    }
    
    //
    while (fgets ( s, N, fp ))
    {
        //
        for (p = strtok( s, "," ); p; p = strtok( NULL, "," ))
        {
            puts( p );
        }
    }
    
    //
    fclose( fp );
    
    return 0;
}



この投稿にコメントする

削除パスワード

No.25021

Re:strtok
投稿者---ぴよ(2005/12/29 23:57:41)


ありがとうございます。
すごく勉強になります。


この投稿にコメントする

削除パスワード

No.25014

Re:strtok
投稿者---まきじ(2005/12/29 22:04:54)


tp = strtok( s, ",");
printf ( "%s", tp );
while ( tp != NULL ) {
        tp = strtok( NULL,"," );
        if ( tp != NULL ) puts( tp );
}

tp = strtok( s, ",");
while ( tp != NULL ) {
        if ( tp != NULL ) puts( tp );
        tp = strtok( NULL,"," );
}
の方が良いですね。


この投稿にコメントする

削除パスワード

No.25018

Re:strtok
投稿者---ぴよ(2005/12/29 22:29:28)


ありがとうございます。
違いを確認しました。
その方が記述も少なくてすみます。
勉強になりました。


この投稿にコメントする

削除パスワード

No.25019

Re:strtok
投稿者---RAPT(2005/12/29 22:33:34)


> tp = strtok( s, ",");
> printf ( "%s", tp );
> while ( tp != NULL ) {
>         tp = strtok( NULL,"," );
>         if ( tp != NULL ) puts( tp );
> }
>
> は
>
> tp = strtok( s, ",");
> while ( tp != NULL ) {
>         if ( tp != NULL ) puts( tp );
>         tp = strtok( NULL,"," );
> }
>
> の方が良いですね。

tp = strtok( s, ",");
while ( tp != NULL ) {
        puts( tp );
        tp = strtok( NULL,"," );
}
で充分かと・・・。

それから、改行文字は \n です。




この投稿にコメントする

削除パスワード

No.25022

Re:strtok
投稿者---ぴよ(2005/12/30 00:05:26)


ありがとうございました。
とても勉強になりました。


この投稿にコメントする

削除パスワード

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