Я пытаюсь удалить последнюю запятую из записи. Я использую strrchr(), чтобы найти последнее вхождение «,» в записи и установить его на нулевое завершение. По какой-то причине он не находит последнее вхождение в запятую и дает ошибку «ошибка сегментации 11».Сегментация Ошибка при использовании strrchr()
void buildAssemblyRecord(char asmRecord[], const char* data)
{
char* record = asmRecord;
record += sprintf(record, "dc.b\t");
int i = 0;
for(i = 0; i < strlen(data); i++)
{
record += sprintf(record, "$%.2X, ", data[i]);
}
//Remove trailing comma
char* whereComma = strrchr(record, ',');
if(whereComma != NULL)
{
*whereComma = '\0';
}
}
Теоретически это должно работать идеально, так как я использую этот метод все время с регулярным старым strchr, чтобы удалить символы новой строки из ввода fgets.
Может ли кто-нибудь сообщить мне, что происходит?
ли вы проверить на NULL? –
У меня есть это, но все, что он делает, это остановить ошибку. Я хочу знать, почему он не распознает запятую. –
*** Покажите свои данные ***. Как мы можем диагностировать проблему на «тайном» вводе? – abelenky