C - Как мне присоединить ASCII-код к массиву символов - PullRequest
0 голосов
/ 30 октября 2018

Я должен сделать массив символов из множества строк / ASCII-кода. Добавление строк работает нормально, а добавление ASCII-кода - нет.

char line[50];
strcat(line, " "); // works
for (int i = 0; i < 29; i++) strcat(line, '196'); // supposed to add lines
for (int i = 0; i < 29; i++) strcat(line, 196);

Ни одна из этих работ. Я всегда получаю это сообщение об ошибке (пришлось его перевести).

Исключение в 0x00E620E7 в файле test.exe: 0xC0000005: нарушение доступа при чтении местоположения 0x00313936.

Чего мне не хватает? Спасибо за вашу помощь

Ответы [ 3 ]

0 голосов
/ 30 октября 2018

если вы знаете код ascii, почему бы не написать его напрямую?

line[i] = 196;

Будет ли это работать?

0 голосов
/ 30 октября 2018

В C строка записывается в двойных кавычках. Пример "abc" является строкой.

В strcat() вы должны передать указатели dst и str, указывающие на строку.

В строке # 2 вы правильно используете strcat(). строка - указатель на массив символов, а " " - указатель на строковый литерал.

Но в строке # 3 '196' не является строкой. Если вы хотите записать 196 в строку, это должно быть strcat(line, "196");

То же самое относится и к строке № 4.

Обратите внимание на следующее.

  • В строке # 1 вы просто объявляете массив символов, а не инициализируете его. Так что он может содержать что угодно. Таким образом, ваш strcat в строке # 2 может начинаться вне массива, даже если в выделенном массиве нет символа '\ 0'. Так что лучше его инициализировать - char line[50] = "";
  • Относительно строки № 2 и строки № 3: если вам нужен непрерывный символ 146, вы можете выполнить одно из следующих действий: for(..,i < MAX-1,..) line[i]=196; line[i+1]='\0'; ИЛИ for(..,i < MAX-1,..) strcat(line, "_"/* Assuming this is the character for 196*/);
0 голосов
/ 30 октября 2018

196 - это char (или int), а не строка, и он не является допустимым параметром для strcat (что означает «конкатенация строк»). '196' вообще ничего не действует и не будет компилироваться.

Строки - это последовательности символов, заканчивающиеся на '\0'. Если вы хотите добавить один символ, вы должны либо обработать его вручную (путем прямого назначения, например, line[i] = 196;), либо использовать строку _dummy helper_ с двумя символами, например: char dummy[2]; dummy[0] = 196; dummy[1] = '\0'; и затем strcat(line,dummy);

...