質問: NULL){ perror("Error: Cannot get memory for temp."); return 0; // 領域確保できず(失敗) } for(i=0; i
回答: ~~回答じゃないですが、まずいところを。~~ ~~> if((temp = (char *)calloc(s, sizeof(char))) == NULL){~~ ~~これでは、tempには1文字分しか領域は確保されません~~ callocではこれでいいんですね。失礼しました #ってか、エンディアン変換だけならこんなことしなくても。 入れ替える、んじゃなくて、BigEndian対応の読み出しルーチンにすれば。 unsigned char* s = input; return (unsigned int)s[0]<<24 | s[1]<<16 | s[2]<<8 | s[3]; これだけで済みますぜ んでもひとつ、 データを削除する、んじゃなくて、もひとつバッファを用意しといて、該当データを抜いてコピーする、という考え方で行くほうがいいかと。