バグ探しで設計の3と4の間に<code>printf("temppath:\t %s\n", rhost);
printf("temphost:\t %s\n", rpath); </code>を入れたですがp6やpr/などが表示されていてこれを何を意味するのか分かりません。
<code>
#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <string.h>
#include <uchar.h>
#include <limits.h>
#include <stdlib.h>
int geturlparserfunc(const char*, char*, char*);
int main(void)
{
char hostname, pathname;
geturlparserfunc("
http://goo/com/", &hostname, &pathname);
printf("ホスト名; %s\n", hostname);
printf("パッチ名: %s\n", pathname);
}
int geturlparserfunc(const char* name, char* rhost, char* rpath)
{
size_t bmfunc_rlen;
int inputlen = strlen(name) + 2;
char input[(int)inputlen];
char32_t inp32b[(int)inputlen];
int arraycount1 = 0, arraycount2 = 0;
mbstate_t mbstate = 0;
int slashconunt = 0, colon = 0;
char temppath[MB_LEN_MAX];
char temphost[MB_LEN_MAX];
strcpy_s(input, inputlen, (char*)(name));
while (input[arraycount2] != '\0'){
bmfunc_rlen = mbrtoc32(&inp32b[arraycount1], &input[arraycount2],MB_LEN_MAX * 5, &mbstate);
if ( (size_t)(-1) == bmfunc_rlen ){
printf("エラーが発生しました\n");
printf("エンコードエラー又はバイト数が足りませんの可能性があります。");
printf("エラー size_t サイズ : %zu\n", bmfunc_rlen);
break;
} else if ( (size_t)(-2) == bmfunc_rlen ){
printf("エラーが発生しました\n");
printf("マルチバイト文字の可能性があります。");
printf("エラー size_t サイズ : %zu\n", bmfunc_rlen);
break;
} else if ( (size_t)(-3) == bmfunc_rlen ){
arraycount1++;
continue;
} else if (( (size_t)(0) == bmfunc_rlen ) ){
break;
} else if ( (size_t)(0) < bmfunc_rlen ){
arraycount1++;
arraycount2 += (int)(bmfunc_rlen);
}
}
int n = 0;
while (arraycount1 > n){
n++;
if (inp32b[n] == ':' || inp32b[n] == '/'){
if (inp32b[n] == ':'){
colon = 1;
}
if (inp32b[n] == '/'){
slashconunt += 1;
}
}
if (slashconunt > 3 && colon == 1) {
bmfunc_rlen = c32rtomb(temppath ,inp32b[n], &mbstate);
if ((size_t)(-1) == bmfunc_rlen){
printf("エラーが発生しました\n");
printf("有効なワイド文字ではありません\n");
printf("エラー size_t サイズ : %zu\n", bmfunc_rlen);
break;
}
strcat(rpath, temppath);
}
if (slashconunt == 2 && colon == 1){
// rhost 処理
bmfunc_rlen = c32rtomb(temphost ,inp32b[n], &mbstate);
if ((size_t)(-1) == bmfunc_rlen){
printf("エラーが発生しました\n");
printf("有効なワイド文字ではありません\n");
printf("エラー size_t サイズ : %zu\n", bmfunc_rlen);
break;
}
strcat(rhost, temphost);
}
}
printf("temppath:\t %s\n", rhost);
printf("temphost:\t %s\n", rpath);
rhost[sizeof(rhost) - 1] = '\0';
rpath[sizeof(rpath) - 1] = '\0';
arraycount1 = 0, arraycount2 = 0, slashconunt = 0, colon = 0 , bmfunc_rlen = 0;
return 0;
}
</code>