どうも、こんにちは。
初心者なのですがお聞きしたい事があります。いろいろ書いてあるテキストファイルがあったとして、
その中の一行(この一行はその行の最初に書いてある文字列で決める)の中から、特定の文字以降、改行まで(1~30文字くらい)を抜き出して、
そのテキストファイルからそれと同じ文字列がある行の次の行の先頭のファイルポインタを保存したいんですが、どうしたら出来るのでしょうか?
使っている物は、
DXライブラリと、Microsoft Visual C++ 2008 Express Editionです。
どのように説明したらいいのかよく分からないので、分かりにくくて申し訳ありおません。
もし答えれる方が居たら答えて下さると助かります。よろしくお願いします。
例
あああああ
あああ
ここ あいうえお
あああ
いいい
ああ
これ いうきえ
これ いうえお
あ
"ここ"という文字列から行を特定して、その行の中から、"い"という文字を探して、それ以降の文字を
抜き出して"これ"という文字列からジャンプする候補を選んで、その行にさっき抜き出した文字列があるかを
調べて、なかったら次の"これ"がある行に飛んで、そこにさっき抜き出した文字列があったらその文字列が合った次の行の始めのファイルポインタを保存したい。
ファイルポインタ
Re:ファイルポインタ
すいません。
質問を変えます。
char型の文字列の中から、特定の文字の位置を調べてそこから終端までを、
他のchar型の変数にコピーするには、どうしたらいいのでしょうか?
質問を変えてしまい申し訳ありませんでした。
お願いします。
質問を変えます。
char型の文字列の中から、特定の文字の位置を調べてそこから終端までを、
他のchar型の変数にコピーするには、どうしたらいいのでしょうか?
質問を変えてしまい申し訳ありませんでした。
お願いします。
Re:ファイルポインタ
こんな感じでどうでしょうか?
[color=#e0e0ff" face="monospace]
#include <string.h>
#include <stdio.h>
int main()
{
    char *p;
    char str1[/url] = "ABCDEF_G_HIJK";  //char型の文字列
    char str2[/url] = "_G_";            //特定の文字列(文字でも大丈夫です)
    char str3[20];
    p = strstr(str1, str2);         //char型の文字列の中から、特定の文字列の位置を調べて
    strcpy_s(str3, p);              //そこから終端までを、他のchar型の変数にコピー
    printf("%s", str3);             //結果表示
    return 0;
}
[/color]
[color=#e0e0ff" face="monospace]
#include <string.h>
#include <stdio.h>
int main()
{
    char *p;
    char str1[/url] = "ABCDEF_G_HIJK";  //char型の文字列
    char str2[/url] = "_G_";            //特定の文字列(文字でも大丈夫です)
    char str3[20];
    p = strstr(str1, str2);         //char型の文字列の中から、特定の文字列の位置を調べて
    strcpy_s(str3, p);              //そこから終端までを、他のchar型の変数にコピー
    printf("%s", str3);             //結果表示
    return 0;
}
[/color]
Re:ファイルポインタ
特に頻繁(1秒間に数十回)に呼ばれるわけでなければ、私なら std::string に変換してから行います。
std::stringを使うなら find と substr を使いますね。
詳細はこちらにも記載してあります。
http://www.geocities.jp/ky_webid/cpp/library/001.html
ひとつの方法として、参考までに。
std::stringを使うなら find と substr を使いますね。
詳細はこちらにも記載してあります。
http://www.geocities.jp/ky_webid/cpp/library/001.html
ひとつの方法として、参考までに。
Re:ファイルポインタ
Eeelさんと、Maさん解答ありがとうございました。
とりあえず、Eeelさんの方法で動きました。ありがとうございます。
Maさんのリンクに飛んでみましたが、少し難したっかので勉強中です。
特に頻繁に呼ばれるようでなければ…と書いてありますが、
それはなぜなのでしょうか?Maさんの方法では、重くなってしまうのでしょうか?
それとも何か別の不都合が生じるのでしょうか?
リンク先に書いてあるかもしれないのですが、頭の出来が悪い物で、
上から順にゆっくり見ていかないと意味が分からず…
申し訳ありません。
お二方、お答えいただき本当にありがとうございました。
とりあえず、最初に書いた事が出来るように頑張ってみます。
その途中また分からない事があるかもしれないので、解決はまだつけないでおきます。
本当にありがとうございました。
とりあえず、Eeelさんの方法で動きました。ありがとうございます。
Maさんのリンクに飛んでみましたが、少し難したっかので勉強中です。
特に頻繁に呼ばれるようでなければ…と書いてありますが、
それはなぜなのでしょうか?Maさんの方法では、重くなってしまうのでしょうか?
それとも何か別の不都合が生じるのでしょうか?
リンク先に書いてあるかもしれないのですが、頭の出来が悪い物で、
上から順にゆっくり見ていかないと意味が分からず…
申し訳ありません。
お二方、お答えいただき本当にありがとうございました。
とりあえず、最初に書いた事が出来るように頑張ってみます。
その途中また分からない事があるかもしれないので、解決はまだつけないでおきます。
本当にありがとうございました。
Re:ファイルポインタ
何度も変な事を聞いて申し訳ありませんが、
char aaa[5]=NULL;
これでコンパイルできないんですが、これと同じ用な事をしたいんですが、
どうしたらいいんですかね?strstrを実行して、見つからなかった場合、
NULLを返すと書いてあったんですが、見つからなかった場合と同じ物を変数に入れたいのですが。
何を言っているのか分からない文章で申し訳ありません。
char aaa[5]=NULL;
これでコンパイルできないんですが、これと同じ用な事をしたいんですが、
どうしたらいいんですかね?strstrを実行して、見つからなかった場合、
NULLを返すと書いてあったんですが、見つからなかった場合と同じ物を変数に入れたいのですが。
何を言っているのか分からない文章で申し訳ありません。