は完全なコードなぜこのstrstrのインスタンスは私にセグメンテーションフォールトを与えていますか?
int count_substr(const char *str, const char *sub)
{
char *ret;
int a = 0; // used to tell where the pointer has moved to
int count = 0;
ret = strstr(str, sub);
while (strstr(ret, sub) != NULL) {
printf("The substring is: %s\n", ret);
for (a = 0; a < strlen(sub); a++) {
ret++;
}
printf("The substring after moving pointer is: %s\n", ret);
count++;
}
return count - 1;
}
私は、私がかつて
strstr(ret,sub)
がゼロになるNULLポインタを使用していないよ、ここで何が起こっているか理解していないので、なぜそれは私にワンセグ障害を与えているです?
Valgrindのは
サイズの不正な読み取り1と アドレス0x0は(最近)、stack'd mallocで確保するかしないと述べているでしょうが、最初の呼び出しret = strstr(str,sub);
場合はテストしていない
最初の 'はstrstr()'を返す 'NULL場合'(' ret'では)whileループで 'strstr(NULL、...)'を呼び出しています。 – dhke