はい、私も初心者です。そして、私はかなり長い間この問題を抱えてきました。strtok を使用して文字列を分割しようとしていますが、うまくいきません。マンページとオンラインの例を見てきましたが、まだ答えがありません。
以下のコードでは、このサイトで回答として提供されているサンプル コードを使用しようとしました。元の while ループは次のとおりです。
char str[] = "hello world how are you?\n";
char *res;
res = strtok(str, " \n");
puts(res);
while (res != NULL)
{
res = strtok(NULL, " \n");
if(res!=NULL)
puts(res);
}
ただし、str をデータに変更し、それぞれの区切り文字 (&=) を変更すると、セグメンテーション フォールトになります。これを修正するにはどうすればよいですか? コードのどこが間違っていますか? これが完全なコードです。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *data;
data = "integer1=1&integer2=2&integer3=3&integer4=4";
puts(data);
char str[] = "hello world how are you?\n";
char *res;
res = strtok(data, "=&");
puts(res);
while (res != NULL)
{
res = strtok(NULL, "=&");
if(res!=NULL)
puts(res);
}
return 0;
}
ちなみにstrtok_r関数も動かない。