- Lamerskie nie działa poprawnie.
Przy pliku o treści 1, działa ok, ale przy
eh=4gueht
wog=eryułąą
woger=ergreg
bntehr=erherh
wysiada, wyświetla
eh=4gueht
wog=eryułąą
woger=ergreg
bntehr=erherhÍÍÍ
A to poprawne, to nie za bardzo mogę zmodyfikować logprintf, gdyż ono jest związane z SDK (zdradzę sekret: programuję w AMX, lecz nie jest to CS), a to jest jakoś dziwnie wykonane, np. tak wygląda górna część, związana z inicjalizacją pluginu:
#include "../SDK/amx/amx.h"
#include "../SDK/plugincommon.h"
#include <iostream>
#include <fstream>
typedef void (*logprintf_t)(char* format, ...);
logprintf_t logprintf;
void **ppPluginData;
extern void *pAMXFunctions;
PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
{
return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
}
PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData)
{
pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF];
logprintf("Plugin wczytany!");
return true;
}
dalej w kodzie są tylko własne funkcje, zarządzające stringami, a na końcu:
PLUGIN_EXPORT int PLUGIN_CALL AmxLoad(AMX *amx)
{
return amx_Register(amx, INI_Natives, -1);
}
PLUGIN_EXPORT int PLUGIN_CALL AmxUnload(AMX *amx)
{
return AMX_ERR_NONE;
}
a, i jeśli podpowiecie, to mogę zmienić rodzaj odczytywania plików, jakiś czas temu testowałem fopen, fread i również były te znaki (czyli jak w tym temacie jest napisane, binarnie odczytuje).
EDIT:
Rozwiązane :D
f = fopen(file, "r");
if(f)
{
fseek(f, 0, SEEK_END);
length = ftell(f);
rewind(f);
if(length > 0 && (buffer = (char*)malloc((length + 1) * sizeof(char))) != NULL)
{
char c; int pos = 0;
while((c = fgetc(f)) != EOF)
buffer[pos++] = c;
buffer[pos] = NULL;
}
}