Преобразование строки в числовой массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет всем. Кто-нибудь знает как строку заполненную числами преобразовать в числовой массив? Сама смогла найти только как с помощью функции atoi преобразовать строку в число. Если кто-нибудь знает киньте код или хотя бы алгоритм.

Решение задачи: «Преобразование строки в числовой массив»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int Str2Arr(char *S, int *Arr)
  6. {
  7.      int c,i,j,l,k;
  8.      char q;
  9.        
  10.      l=strlen(S);
  11.      c=0;
  12.      k=0;
  13.      j=0;
  14.      
  15.      
  16.      for (i=0; i<l; i++)
  17.      {
  18.          q=S[i];
  19.          
  20.          if (q==' ')
  21.          {
  22.           if (k>0)
  23.             {
  24.                Arr[j++]=c; c=0; k=0;            
  25.             }
  26.          }  
  27.          else
  28.             {
  29.                 k=k+1;
  30.                 c=c*10+(q-'0');
  31.             }
  32.      }
  33.      if (k>0)
  34.       {
  35.         Arr[j++]=c; c=0; k=0;            
  36.       };
  37.      return j;
  38. }                    
  39.  
  40. int main(int argc, char *argv[])
  41. {
  42.  
  43.   int Z[100];
  44.   int i,n;
  45.   char *Str="56 0 0 12 9 7 3";
  46.  
  47.   for (i=0; i<100; i++) Z[i]=0;
  48.  
  49.   n=Str2Arr(Str,Z);
  50.  
  51.   for (i=0; i<n; i++) printf("%d\n",Z[i]);
  52.    
  53.   system("PAUSE"); 
  54.   return 0;
  55. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы: , ,
  2. Определяем функцию Str2Arr, которая принимает два аргумента: char S (строка) и int Arr (массив целых чисел).
  3. Внутри функции объявляем переменные:
    • int c,i,j,l,k; - для хранения индексов и счетчиков
    • char q; - для хранения символа
    • l=strlen(S); - вычисляем длину строки
    • c=0; - инициализируем счетчик
    • k=0; - инициализируем счетчик
    • j=0; - инициализируем счетчик
  4. Запускаем цикл for для прохода по каждому символу строки S:
    • q=S[i]; - сохраняем текущий символ в переменную q
    • if (q==' ') - если текущий символ равен пробелу
    • {
    • if (k>0) - если в массиве Arr уже есть элементы
    • {
    • Arr[j++]=c; - добавляем значение c в массив Arr и увеличиваем счетчик j
    • c=0; - сбрасываем значение c (готов к следующему числу)
    • k=0; - сбрасываем значение k (готов к следующему числу)
    • }
    • }
    • else - если текущий символ не равен пробелу
    • {
    • k=k+1; - увеличиваем значение k (число еще не закончилось)
    • c=c*10+(q-'0'); - получаем число, увеличивая значение c на 10 в соответствии с десятичной системой и добавляя значение текущего символа (в числовом формате)
    • }
  5. После прохода по всем символам строки, проверяем значение k. Если оно больше 0, значит последнее число не было полностью обработано, и мы добавляем его в массив Arr.
  6. В функции main создаем массив Z[100] и инициализируем все его элементы значением 0.
  7. Затем вызываем функцию Str2Arr, передавая ей строку 56 0 0 12 9 7 3 и массив Z в качестве аргументов.
  8. Результат работы функции сохраняем в переменной n.
  9. Затем с помощью цикла for выводим все элементы массива Z на экран.
  10. В конце программы вызываем функцию system(PAUSE), чтобы программа не закрылась сразу после вывода последнего элемента массива.
  11. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы