#c #cs50
#c #cs50
Вопрос:
Я создал массив из 26 букв, и я хочу присвоить каждому элементу их значения ASCII следующим образом:
ASCII[0] = 65
ASCII[1] = 66
Я уже определил ASCII[0]
как «A» в своем массиве. Итак, результат, который, я надеюсь, должен быть:
A = 65
B = 66
Итак, в чем проблема?Вот мой код:
#include <cs50.h>
#include <stdio.h>
#define SIZE 26
int main(void)
{
string ASCII[SIZE] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
for(int i=0; i<26; i )
{
ASCII[i] = i 65;
}
}
Комментарии:
1. ‘A’ — это символ. «A» — это массив из 1 символа (плюс нулевой ограничитель).
Ответ №1:
К сожалению, вы укусили глупый string
typedef курса CS50. In cs50.h
— string
это typedef для указателя на char
. Обычно мы вообще не используем такой typedef в C — об этом ведутся длительные дебаты в выпусках libcs50.
То i 65
, что вы делаете, есть число, а не указатель — в данном случае для одного символа.
То, что вы хотите, это либо:
char ASCII[SIZE] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
или
char ASCII[SIZE];
for (int i = 0; i < SIZE; i ) {
ASCII[i] = i 65; // or even better: i 'A'
}
любой из них будет иметь любой элемент массива из 26 символов ASCII[i]
, равный 65 i
.
Комментарии:
1. Да, это работает! Так что это просто CS50, большое вам спасибо.