1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   掲示板ランキング



掲示板利用宣言

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

 私は

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

掲示板1

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

No.6203

テキスト中の"を消すプログラム
投稿者---はてな(2006/07/23 21:34:11)


#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

int main(int argc, char *argv[])
{
char block[1024];
char *cmd[5000];
int in;
int out, i, j, k;
int nread;

if(argv[1]==NULL) {
printf("error\n");
exit(1);
}

out = open("data.txt", O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);

in = open(argv[1], O_RDONLY);

if(in != -1) {
while((nread = read(in, block, sizeof(block))) > 0) {
cmd[0] = strtok( block, """ );
j = 0;
while(cmd[j] != NULL) {
cmd[j+1] = strtok( NULL, """ );
j++;
k = j;
}
j = 0;
while(j < k) {
write(out, cmd[j], strlen(cmd[j]));
j++;
}
}
}
}

OS WINDOWSXP
コンパイラ Cygwinのgcc

指定したtxtファイルのテキスト中の"を消すプログラムを上のように記述したのですが、コンパイルエラーになってしまいうまくいきません。どのようにしたら良いのか教えてください。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:テキスト中の"を消すプログラム 6204 rvr_driver 2006/07/23 21:45:31
<子記事> Re:テキスト中の"を消すプログラム 6207 ruby 2006/07/23 22:49:27
<子記事> Re:テキスト中の"を消すプログラム 6210 επιστημη 2006/07/24 00:18:46


No.6204

Re:テキスト中の"を消すプログラム
投稿者---rvr_driver(2006/07/23 21:45:31)


>指定したtxtファイルのテキスト中の"を消すプログラムを上のように記述したのですが、コンパイルエラーになってしまいうまくいきません。どのようにしたら良いのか教えてください。

コンパイルのエラー内容をそのまま載せてください。
ソースの添付は「HTML変換ツール」で字下げしましょう。

因みにエスケープシーケンスをググッてみるといいかも。



この投稿にコメントする

削除パスワード

No.6205

Re:テキスト中の"を消すプログラム
投稿者---はてな(2006/07/23 22:21:27)


エラー内容は次のように表示されます。

test.c: In function 'main';
test.c:25: error: missing terminating " character
test.c:26: error: parse error before "j"
test.c:28: error: missing terminating " character
test.c:29: error: parse error before "j"

どこをどう修正すればいいのでしょうか・・・。



この投稿にコメントする

削除パスワード

No.6206

Re:テキスト中の"を消すプログラム
投稿者---ruby(2006/07/23 22:27:57)


>どこをどう修正すればいいのでしょうか・・・。

rvr_driverさんの回答の最下行はお試しになりましたか?



この投稿にコメントする

削除パスワード

No.6211

Re:テキスト中の"を消すプログラム
投稿者---rvr_driver(2006/07/24 07:08:28)


cmd[0] = strtok( block, """ );
cmd[j+1] = strtok( NULL, """ );

「"""」→「"\""」


この投稿にコメントする

削除パスワード

No.6212

Re:テキスト中の"を消すプログラム
投稿者---はてな(2006/07/24 12:20:54)


できました。ありがとうございました。


この投稿にコメントする

削除パスワード

No.6218

Re:テキスト中の"を消すプログラム
投稿者---rvr_driver(2006/07/24 19:35:09)


>できました。ありがとうございました。

あと、何が問題だったかを解説していただきたいです。


この投稿にコメントする

削除パスワード

No.6207

Re:テキスト中の"を消すプログラム
投稿者---ruby(2006/07/23 22:49:27)


そもそも、strtok, read, writeといった関数を使わなくても、
もっと簡単にできると思うのですが…。

どうしてもこれらの関数を使う必要があるのですか?


この投稿にコメントする

削除パスワード

No.6208

Re:テキスト中の"を消すプログラム
投稿者---はてな(2006/07/23 22:58:30)


>そもそも、strtok, read, writeといった関数を使わなくても、
>もっと簡単にできると思うのですが…。
>
>どうしてもこれらの関数を使う必要があるのですか?

とくに必要はないです。ただ他の作り方がわかりません。



この投稿にコメントする

削除パスワード

No.6209

Re:テキスト中の"を消すプログラム
投稿者---ruby(2006/07/23 23:03:38)


>とくに必要はないです。ただ他の作り方がわかりません。

私なら、以下の関数群を使います。
fopen, fclose, fgetc, fputc


この投稿にコメントする

削除パスワード

No.6210

Re:テキスト中の"を消すプログラム
投稿者---επιστημη(2006/07/24 00:18:46)


/*
 * 標準入力から得られたテキストから
 * double-quoteを除いて
 * 標準出力へ
 */

#include <iostream>
#include <iterator>
#include <algorithm>

int main() {
  std::remove_copy(
    std::istreambuf_iterator<char>(std::cin),
    std::istreambuf_iterator<char>(),
    std::ostreambuf_iterator<char>(std::cout),
    '\"');
}

/* C++ならこんだけ。 わざわざややこしいことせんでもええでしょ */




この投稿にコメントする

削除パスワード

No.6213

Re:テキスト中の"を消すプログラム
投稿者---かずま(2006/07/24 13:45:00)


なるほど、istreambuf_iterator を使えばいいんですね。
istream_iterator を使ったら、std::cin >> std::noskipws; が必要でした。

でも、Cならこんだけ、わざわざ C++で書かんでもええでしょ
int main(void) {
    int c;
    while ((c = getchar()) != EOF)
        if (c != '"') putchar(c);
    return 0;
}



この投稿にコメントする

削除パスワード

No.6214

Re:テキスト中の"を消すプログラム
投稿者---επιστημη(2006/07/24 14:07:57)


>でも、Cならこんだけ、わざわざ C++で書かんでもええでしょ
>...

あ、確かに ^^;
# 僕にとってはCの方が"わざわざ"なもんで。



この投稿にコメントする

削除パスワード

No.6215

Re:テキスト中の"を消すプログラム
投稿者---nop(2006/07/24 14:37:34)


>>わざわざ C++で書かんでもええでしょ
># 僕にとってはCの方が"わざわざ"なもんで。

こういう事を言い出すと、
わざわざプログラムを書かずに、
エディタで置換すればいいと言うことに...


この投稿にコメントする

削除パスワード

No.6216

Re:テキスト中の"を消すプログラム
投稿者---shu(2006/07/24 14:52:14)


>こういう事を言い出すと、
>わざわざプログラムを書かずに、
>エディタで置換すればいいと言うことに...

そういう発想が、プログラミングのプログラミングたるところだと思う。

その置換っていう考え方がはっきりあって、それをc言語で表現するのと、
なんの考えも無しに、c言語で表現するのでは、同じコードだったとしても、
それは全く別のプログラムです。


この投稿にコメントする

削除パスワード

No.6217

Re:テキスト中の"を消すプログラム
投稿者---ruby(2006/07/24 15:18:43)


>わざわざプログラムを書かずに、
>エディタで置換すればいいと言うことに...

そうですね。
No programs, no bugs.


この投稿にコメントする

削除パスワード

No.6219

Re:テキスト中の"を消すプログラム
投稿者---rvr_driver(2006/07/24 19:39:16)


いい意味での手抜きというやつですね。
目指したいところです。



この投稿にコメントする

削除パスワード

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





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