ページ 11

文字列の分割について2

Posted: 2012年3月31日(土) 18:22
by net921
文字列の分割についての続きです。
自分なりに下記のようなところまでできました。
,,,
の部分の影響であるらしいのですがどのようにすればいいでしょうか??

コード:

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

char buf[256]="";

int main(void) {
char *p;
int i=0;
char RMC[12][15]={NULL};
char GGA[12][15]={NULL};

FILE *fp;
    char *filename = "sample.txt";

	/* ファイルのオープン */
    if ((fp = fopen(filename, "r")) == NULL) {
        printf("%sのオープンに失敗しました.\n", filename);
        exit(EXIT_FAILURE);
    }

 /* ファイルの終端まで文字を読み取り */
    while ( fgets(buf, 256, fp) != NULL ) {


    /* ファイルのクローズ */
    fclose(fp);

    return 0;
}

Re: 文字列の分割について2

Posted: 2012年3月31日(土) 18:30
by net921
strtokの影響みたいです。

Re: 文字列の分割について2

Posted: 2012年3月31日(土) 18:41
by みけCAT
最初の

コード:

if (strcmp(p,"$GPRMC")==0) {
の中のwhile文を抜けた時点でpがNULLになっていて、その状態で

コード:

if (strcmp(p,"$GPGGA")==0) {
に行くため、アクセス違反になるようです。
オフトピック
インデントがぐちゃぐちゃなので、整えたほうがいいと思います。

Re: 文字列の分割について2

Posted: 2012年3月31日(土) 18:57
by net921
ステップ実行すると
while((p=strtok(NULL,","))!=NULL) { /* カンマ区切りの文字を切り出す */
のところでエラーになるんですがここはどうなんですか???
どうすればいいでしょう?

Re: 文字列の分割について2

Posted: 2012年3月31日(土) 19:04
by みけCAT
Ideoneで調べてみると、自分が指摘した場所でエラーになっています。
http://ideone.com/LsfJN

コード:

while((p=strtok(NULL,","))!=NULL) { /* カンマ区切りの文字を切り出す */
は2箇所にあるのですが、どちらですか?

Re: 文字列の分割について2

Posted: 2012年3月31日(土) 19:08
by net921
ああ
そうでした みけCATさんのであってます。
どうしたら解決できますかね~~~?

Re: 文字列の分割について2

Posted: 2012年3月31日(土) 19:32
by net921
事故解決しました。

Re: 文字列の分割について2

Posted: 2012年3月31日(土) 19:33
by net921
自己解決しました

Re: 文字列の分割について2

Posted: 2012年3月31日(土) 20:50
by みけCAT
解決したのでしたら、解決した具体的なコードを書き込んでください。
フォーラムルールです。

Re: 文字列の分割について2

Posted: 2012年3月31日(土) 21:29
by net921
解決、というかあきらめました!!!