ユーザーが入力したURLが必要な形式であることを確認しようとしています。この場合、http://
存在する場合は削除しようとしていますが、非常に奇妙な問題が発生しています...
関数" www.google.com
"または""をフィードすると、http://www.google.com
すべてが期待どおりに実行されます。ただし、有効なURLではないもの(ポテトなど)をフィードすると、メモリ内にあるジブリッシュが返されます...
なぜこれが必ずしも問題ではないのか、それは間違いなく予期されたプログラムの振る舞いではなく、なぜそれがこのように振る舞うのか私にはわかりません...
Enter URL: potato
Error! Could not resolve ip address for host: ╪☻ï*** Process returned 1 ***
Press any key to continue...
問題の関数は次のとおりです。
char *bldurl(const char *url)
{
char *nurl;
int ch = 0, i = 0;
if(chksbstr(url, "http://") < 0)
{
if(!(nurl = malloc(strln(url) + 8)))
{
printf("\nError! Memory allocation failed while appending URL!");
return 0x00;
}
nurl[ch] = 'h';
nurl[++ch] = 't';
nurl[++ch] = 't';
nurl[++ch] = 'p';
nurl[++ch] = ':';
nurl[++ch] = '/';
nurl[++ch] = '/';
for(++ch; i <= strln(url); ch++, i++) nurl[ch] = url[i];
nurl[--ch] = 0x00;
}
else
{
if(!(nurl = malloc(strln(url) + 1)))
{
printf("\nError! Memory allocation failed while appending URL!");
return 0x00;
}
for(i = 0; i <= strln(url); i++) nurl[i] = url[i];
nurl[i + 1] = 0x00;
}
return nurl;
}
そして、これがその特定のエラーメッセージを返す私のコードの部分です:
if(!(hostip = gethostbyname(hostname)))
{
free(hostname);
free(url);
printf("\nError! Could not resolve ip address for host: %s", hostname);
WSACleanup();
return 0x00;
}
hostname
上記のコードでは、前述の関数からの戻り値です。
どう考えたらいいのかよくわかりません。