Re[2]: Помогите разобраться, видимо с кодовкой
От: Dosent Россия  
Дата: 13.07.15 10:18
Оценка:
Здравствуйте, VTT, Вы писали:

VTT>Здравствуйте, Dosent, Вы писали:


D>>Есть код

D>>
D>>GetPrivateProfileString("General", "ExeFileServis1", "not data", Text, MAX_LOADSTRING, "./config.ini");
D>>

D>>он на ура работает и в переменной Text значение из config.ini.
D>>Но если динамически создать строку код ниже
D>>
D>>TCHAR num[10];
D>>TCHAR ExeFileServis[] = ("ExeFileServis");
D>>itoa(1,num,10);
D>>GetPrivateProfileString("General", strcat(ExeFileServis,num), "not data", Text, MAX_LOADSTRING, "./config.ini");
D>>

D>>то код не работает. подозреваю что не так передачей параметров. но что и как решить.

VTT>strcat(ExeFileServis,num) — вы дописываете в выделенный на стеке массив фиксированной длины ExeFileServis — классический buffer overrun

Насколько я понимаю я не дописываю а возвращаю значение функцией strcat()

Функция strcat() присоединяет к строке str1 копию строки str2 и завершает строку str1 нулевым символом. Конечный нуль-символ, первоначально завершающий строку str1, перезаписывается первым символом строки str2. Строка str2 при этом не изменяется. Если заданные массивы перекрываются, поведение функции strcat() не определено.

Сердце мудрого делает язык его мудрым и умножает знание в устах его. ПРИТСОЛО(16,23)
3433606
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.