Преобразовать массив строк в массив с кодами ASCII - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь преобразовать каждый символ строки в его код ASCII.Массив строк взят из stdin.

Я пытаюсь перебрать строку и преобразовать каждый символ в ASCII с помощью atoi () и добавить этот код ASCII в новый массив int.

char s2[1024];
fgets(s2, 1024, stdin);
int arr[1024]; 
int i = 0;
while (i < strlen(s2))
  {
  char * start = s2;
  int j = 0;
    while(start != "\0")
    {
      arr[j++] = atoi(start);
    }
    i++;
  }

Я довольно новичок в C, и я подумал, что это может сработать, но я получаю "ошибку сегментации (ядро сброшено)", когда я запускаю код.Я знаю, что эта ошибка связана с памятью, но я не знаю, как ее отладить.

1 Ответ

0 голосов
/ 29 мая 2019

Вам не нужно ничего преобразовывать, потому что символы в s2 уже являются значениями ASCII.

Вы, вероятно, хотите что-то вроде этого:

char s2[1024];
fgets(s2, 1024, stdin);
int arr[1024]; 
int i = 0;
while (i < strlen(s2))
{
  arr[i] = s2[i];
  i++;
}

Если ваш ввод скажет:

ABCD

arr будет содержать следующие значения: {65, 66, 67, 68, x, x, x}, где x обозначает «неопределенное значение».

Лучшая версия цикла:

for (int i = 0; i < strlen(s2); i++)
{
  arr[i] = s2[i];
}

В целом, лучшая версия:

#define MAXLINE 1024

char line[MAXLINE];
fgets(line, sizeof line, stdin);
int arr[MAXLINE]; 

for (int i = 0; i < strlen(s2); i++)
{
  arr[i] = s2[i];
}
...