Гитара Cómo puedo Лос тильды Лос символ de ООН arreglo?

Cuando танго el arreglo, введение ООН for параграф ver individualmente cada char y cuando hago ООН print de estos datos, Лос char тильды que tienen я Лос considera доблесть DOS Комо. En ASCII, тильда el y luego le sigue el es 195 ASCII de la letra, por ejemplo:

oído  -> o = 111, tilde = 195, i=173, d=100, o=111

Quiero saber como puedo quitar el tilde del arreglo o como puedo convertir laяcon tilde en unaяsin tilde.

2
задан 10.04.2017, 05:35
2 ответа

introducir la descripción de la imagen aquí

ты Можешь ощущаться, что действительно cГіdigo ascii i с акцентом ( Г - ) - 161 minГєscula и 214 для нее mayГєscula, и i без акцента - 105 для minГєscula и 73 для нее mayГєscula.

Пример в это:

#include <stdio.h>
#define LEN 14 //Puedes utilizar strlen de string.h

int main()
{
    char buffer[] = "Íbamos íbamos";

    printf("texto antes de procesar: %s\n", buffer);    
    for(int i = 0; i < LEN; i++)
    {
        const char *caracter = &buffer[i];        
        char iConAcento = 161;
        char IConAcento = 214;
        if(*caracter == iConAcento)
            buffer[i] = 105;
        else if(*caracter == IConAcento)
            buffer[i] = 73;
    }

    printf("texto despues de procesar: %s\n", buffer);

    return 0;
}

Этот cГіdigo deberГ, - чтобы служить, но в меня я не функционирую, потому что моя система работает внизу она codificaciГіn символов Unicode UTF-8 , кроме того завись tambiГ©n многий из составителя.

Пример mГЎs genГ©rico, но ни так, потому что tambiГ©n он зависит от системы и составитель:

#include <stdio.h>
#include <string.h>
#define LEN 14 //Puedes utilizar strlen de string.h

int main()
{
    char buffer[] = "Íbamos íbamos";

    printf("texto antes de procesar: %s\n", buffer);    
    for(int i = 0; i < LEN; i++)
    {
        const char *caracter = &buffer[i];        
        char iConAcento = 'í';
        char IConAcento = 'Í';
        if(*caracter == iConAcento)
            buffer[i] = 'i';
        else if(*caracter == IConAcento)
            buffer[i] = 'I';
    }

    printf("texto despues de procesar: %s\n", buffer);

    return 0;
}

В этом втором примере, уже я функционирует, но составитель я жалуется со следующим объявлением: constante de carácter con múltiples caracteres, я посылаю этот ответ , где он объясняется очень хорошо, о котором говорится.

0
ответ дан 24.11.2019, 10:03

Возможно быть видно, что два nГєmeros (вычеркните = 195 и i = 173) который ты показал, не совпадают ни для чего с символами ascii акцента и ее i. Однако, если мы перемещаем эти два nГєmeros в шестнадцатеричный и соединяем их, чтобы делать Word (16 бит) мы получаем nГєmero 0xC3AD (0xC3=195 и 0xAD=173), что прошлое в десятичный - 50093. Любопытно этот nГєmero нам дает carГЎcter admiraciГіn ВЎ достаточно похоже в Г - . Ввиду того, что его нет один cГіdigo 16 бит единственно, он у нас остается она opciГіn одной codificaciГіn в 2 байт. Мы можем подтверждать это нажимая Alt+50093 . carГЎcter полученный это та admiraciГіn ВЎ .

 “Table B-2 Уникоде Чарактер Коде Ранхес for UTF-8 Чарактер Codes” могут видеть, что символы одинокий Американский стандартный код обмена информацией используют один байт (0x00-0x7F) в то время как символы для Европы (кроме Американский стандартный код обмена информацией), ГЎrabe и еврей, используют два байт. Первый байт может быть между стоимостью 0xC2 (194) и 0xDF (223). Второй байт может быть между 0x80 и 0xBF (128 и 191).

видно, что твой nГєmeros они совпадают в этой раме codificaciГіn, и в http://www.utf8-chartable.de/ мы можем видеть, что 'i' 0xc3 0xad .

introducir la descripción de la imagen aquí

Видя это я utilizarГ - в if, который подтверждал, если байт leГ-do равен в 0xC3 (195), так как это implicarГ, - к которому detrГЎs приходит другой carГЎcter. Потом habrГ, - в который конвертировать следующего carГЎcter, но поскольку ты не можешь использовать прямые изменения бит (поскольку в случае их mayГєsculas и minГєsculas в Американском стандартном коде обмена информацией) podrГ-эксперт использовать один женил или последовательность if , чтобы обнаруживать гласные и менять их.

оставил Тебе стоимость Американский стандартный код обмена информацией и UTF-8 гласных.

ASCII       UTF-8 (Segundo Byte)
a – 0x61        á – 0xA1
e – 0x65        é – 0xA9
i – 0x69        í – 0xAD
o – 0x6F        ó – 0XB3
u – 0x75        ú – 0xBA

CГіdigo:

for (int i = 0; i < strlen(v_ascii); i++)  {
    if (v_ascii[i]==0xC3) {
        //Aquí el código de detección y cambio de vocal.
        //El cambio ha de hacerse sobre el siguiente carácter, v_ascii[i+1]
    }
}
1
ответ дан 24.11.2019, 10:03
  • 1
    +1 из-за aná lisis на codificació n, в действительности он относится друг к другу UTF-8. – jachguate 02.05.2019, 22:59
  • 2
    Простите мое неведение, но для qué они подают комментарии. Я не понимаю комментарий в мой ответ. Я хочу сказать, я не говорил о другой вещи, которая не UTF-8.¿ из-за qué ты говоришь - в действительности он относится друг к другу UTF-8?. Извините, но я новый из-за aquí и aú n он у меня остается много из-за того, что изучает. – APO69 03.05.2019, 01:59
  • 3
    Комментарии состоят для любой вещи в том, чтобы это не были прямо вопросы и ответы. Из-за acá комментарий, который начинается с " +1" значит что-то как " voté в пользу тебя pregunta/respuesta" и explicació n из-за qué dí мой голос "за". Комментарий, который начинается с "-1" , наоборот, значит " voté в contra" , следовавший из explicació n из-за qué. Не необходимо оставлять комментарии каждый раз, когда за него голосуют. Я это сделал, потому что не ты отвечаешь прямо вопрос especí fica AP, но ты обозначаешься в direcció n правильная Вашей проблемы и ты даешь ему solució n. – jachguate 03.05.2019, 03:53
  • 4
    Ok, спасибо за aclaració n. – APO69 03.05.2019, 04:27
  • 5
    И спасибо за +1 – APO69 07.05.2019, 18:30

Теги

Похожие вопросы