TransWikia.com

Уровни косвенного обращения СИ

Stack Overflow на русском Asked by dadyaSasha on November 27, 2021

Перебираю строку и хочу текущий символ склеить с другой строкой, но показывает предупреждение

"const char *" отличается по уровням косвенного обращения от "char"

а при компиляции ошибку в strcat

Вызвано исключение по адресу 0x7889C573 (ucrtbased.dll) в Project1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x00000030.

массив сс заполненн данными из файла.

char cc[368];
char number[5] = "0";

for (int i = 0; i < 368; i++) {
    if (cc[i] == ';'){
        continue;
    }
    else {
        strcat(number, cc[i]);
        if (cc[i+1] == ';') {
            
        }
    }
}

Всем спасибо. Как и сказал @dIm0n. strcat не работает с одним символом. В итоге преобразовал символ в строку и склеил 2 строки. Получилось:

for (int i = 0; i < 368; i++) {
    if (cc[i] == ';'){
        memset(number, 0, 5);
        continue;
    }
    else {
        char cToStr[2];
        cToStr[1] = '';
        char currentChar = cc[i];
        cToStr[0] = currentChar;
        strcat(number, cToStr);
        if (cc[i+1] == ';') {
            
        }
    }
}

One Answer

Ну, вообще-то, тогда уж

strncat(number, &cc[i],1);

только вот не вижу я, чтоб в cc хранилось что-то не мусорное (вы же ее не инициализируете?), а в number хватало места (сейчас вы можете добавить в нее не более 3 символов).

Answered by Harry on November 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP