- 題名: 一行一行読み込んで先頭のアドレスを返す方法
- 日時: 2004/10/19 1:46:23
- ID: 6806
- この記事の返信元:
- (なし)
- この記事への返信:
- [6809] Re[1]: 一行一行読み込んで先頭のアドレスを返す方法2004/10/19 9:33:53
- ツリーを表示
■No6806に返信(しんさんの記事) > fgets(buff,999,*fp)で一行一行取得すると、 > キーと一致した行でもその行の位置をポインタが返さず、 その処理をしている「問題の部分」がソースなり、詳細なりがあれば答えやすいのですが... > 一番最後の行のポインタを返してきます。 何もやってなければ、そうなるでしょうね。 言われた「通り」にやるとこんな感じになると思いますが... Source:-------------------------------------------------------------------- char* GetMatch(const char szFilePath[256], const char szSearch[256]) { FILE *fpInput; char *pFind; char szBuffer[256]; if ((fpInput = fopen(szFilePath, "r")) == NULL) { return NULL; } while (fgets(szBuffer, 256, fpInput) != NULL) { if ((pFind = strstr(szBuffer, szSearch)) != NULL) { //マッチした return pFind; } } return NULL; } ---------------------------------------------------------------------------
分類:[その他]
1,3333,444,4444
4,456,ううう,3333
3,あああ,6566,6666
2,555,6666,7777
上記のようなカンマ区切りの先頭がキーになっているデータについて
ある行を編集するプログラムを書いているのですが
任意の行のポインタのアドレスを取得するために
一行一行データを読み込み、キーと一致した行のアドレスを取得したいと思っております。
fgets(buff,999,*fp)で一行一行取得すると、
キーと一致した行でもその行の位置をポインタが返さず、
一番最後の行のポインタを返してきます。
またfreadで読み込もうとすると、全データを読み込んでしまい、
一行一行読み込むところではございません。
一行一行読み込んで、その行のアドレスを返す方法がございましたら
ご教授願います