C言語関係掲示板

過去ログ

No.1142 空白と改行を除いてCSV化

[戻る] [ホームページ]
No.14546

空白と改行を除いてCSV化
投稿者---akipc(2004/06/10 13:32:44)


はじめまして。

可変長テキストファイルを読込み、空白と改行を除いてCSV化したいんですが、どなたかアドバイスをよろしくお願いします。
memcpyを使って作成したんですが上手くいきませんでした。


↓テキストの中身はこんな感じです。

AAAAA  BBBB C 123
456 7 WWW あ



↓編集結果はこんな感じです。

AAAAA,BBB,C,123,456,7,WWW,あ


No.14547

Re:空白と改行を除いてCSV化
投稿者---nop(2004/06/10 13:35:37)


>可変長テキストファイルを読込み、空白と改行を除いてCSV化したいんですが、どなたかアドバイスをよろしくお願いします。
>↓テキストの中身はこんな感じです。
>AAAAA  BBBB C 123
>456 7 WWW あ
>↓編集結果はこんな感じです。
>AAAAA,BBB,C,123,456,7,WWW,あ

空白、改行文字を区切り文字として strtok() でトークン分割
後は各トークンを「,」区切りで出力すればいいんでない?


No.14548

Re:空白と改行を除いてCSV化
投稿者---akipc(2004/06/10 14:00:21)


>空白、改行文字を区切り文字として strtok() でトークン分割
>後は各トークンを「,」区切りで出力すればいいんでない?

char *strtok(char *s, const char *t);

コレを使えば出来るのでしょうか?
調べてみたのですが、よく分からなかったです。




No.14549

Re:空白と改行を除いてCSV化
投稿者---nop(2004/06/10 14:16:17)


>コレを使えば出来るのでしょうか?
>調べてみたのですが、よく分からなかったです。

まずは、「掲示板ご利用上の注意」をもっとよく読む事を希望します。
>ある程度ご自分の解き方をお示しください。



No.14550

Re:空白と改行を除いてCSV化
投稿者---akipc(2004/06/10 14:33:55)


while(fgets(data,BUFFER_SIZE,fin)!=NULL) {
memcpy(wk_out,data+1,5);
fputs(wk_out,txt_out);
work_out[6]='\0';

こんな感じで作ったんですけど、もし途中で改行されていたり、文字数が1〜4桁だったときに、空白と改行が出てCSV形式になりません。

これでよろしいでしょうか?


No.14554

Re:空白と改行を除いてCSV化
投稿者---RAPT(2004/06/10 21:28:23)


ソースを掲載する時は、
「開発環境の明示」と「事象が再現できるコンパイル可能な最低限のコード」
を提示するといいでしょう。



No.14551

Re:空白と改行を除いてCSV化
投稿者---あかま(2004/06/10 14:35:54)


>char *strtok(char *s, const char *t);
>↑
>コレを使えば出来るのでしょうか?
>調べてみたのですが、よく分からなかったです。
「よく分からない」だけではこちらも説明は無理でしょう。
http://www9.plala.or.jp/sgwr-t/lib/strtok.html
HPに説明が載っていますが、掲示板ではこれ以上の説明は難しいです。

>memcpyを使って作成したんですが上手くいきませんでした。
うまくいかないなりにそのソースを載せると吉。

カンマつけるだけならこれで十分かと。
#include <stdio.h>

int main(){
    char str[128];
    
    while(scanf(" %s",str) != EOF){
        printf("%s,",str);
    }
    return 0;
}

実行はリダイレクトを使ってこんな感じ
programname < input.txt > output.txt