この簡単なstrstr
作り直しを練習問題として持っていますが、理解できないエラーがあります
#include <iostream>
#include "windows.h"
using namespace std;
int strstr2(char *arr, char *findme)
{
const int sizearr = sizeof(arr) / sizeof(char);
const int sizefindme = sizeof(findme) / sizeof(char);
int j=0;
for(int i=0; i<sizearr; i++)
{
if(arr[i] == findme[j])
{
// Match
if(j == sizefindme-1)
return i;
else
j++;
}
else
{
j = 0;
}
}
return -1;
}
int main (int argc, char **argv)
{
char arr[] = "I'd like 2% milk";
char toBeFound[] = "like";
int pos = strstr2(arr, toBeFound);
Sleep(3000);
}
どういうわけかライン
const int sizefindme = sizeof(findme) / sizeof(char);
sizefindme = 8
文字列の長さ"like"
が実際には4(またはヌルターミネータの場合は5)であるときに戻ります。そして、ヌルターミネータは実際にはtoBeFound
配列に存在します。何が問題なのsizeof
ですか?エラーを見つけることができません。