2016-12-04 2 views
0

Я занимаюсь проведением ряда семинаров для обучения в c. Существует проблема, когда вы запрашиваете пользовательский ввод, пусть говорят «bob», а код должен опустить его код ASCII, чтобы он стал «ana». Я нахожусь в убытке от того, как я это делаю. Будет ли что-то вродесмена символа путем вычитания его кода ASCII на языке c

int main() { 
    char str[10]; 
    char test[10]; 
    int i; 

    printf("Enter a string: "); 
    scanf("%s", str); 

    while(str[i]!='\0') { 
     test[i]=str[i]; i++; 
    } 
} 

Если бы я напечатать это он только дает мне код ASCII, а не буквы, связанные с ним. Как я возьму код ASCII и превращу его в буквы? Или есть лучший способ это

+1

У вас нет 'a []' в объявлениях переменных. Пожалуйста, отредактируйте и опубликуйте свой ** настоящий код **, который компилируется. Кроме того, почему вы создали 'str' массив' char', но 'test' массив' int'? –

+0

'i' неинициализирован. И вы не закончили массив 'test' (при условии, что ваш настоящий код печатает его). –

+1

«Если бы я напечатал это, это дало мне код ASCII, а не буквы, связанные с ним». Пожалуйста, покажите нам, как именно вы печатаете. Также покажите пробег с примерами ввода и вывода. –

ответ

2

Вы хотите:

test[i] = orig[i] - 1; 

Если бы я напечатать это он только дает мне код ASCII

Это просто означает, что вы не печатаются это правильно. Это должно работать:

printf("orig: %s, transformed: %s\n", orig, test); 
+0

спасибо, также из-за помощи сообщения, мне не нужно беспокоиться о всей конверсии. – OnesQuared

1

В C, char представляет собой целочисленный тип. Нет необходимости конвертировать между кодом и буквой: буква - это код. Например, в системах ASCII 'a' == 97.

Другими словами, вы можете просто сделать str[i]--; напрямую (при условии, что ваша платформа использует ASCII).

+0

Спасибо, не знал, что вам не нужно беспокоиться о конвертации, а что нет, очень помогли – OnesQuared

Смежные вопросы