Преобразование строки в числовой массив - C (СИ)
Формулировка задачи:
Привет всем. Кто-нибудь знает как строку заполненную числами преобразовать в числовой массив? Сама смогла найти только как с помощью функции atoi преобразовать строку в число. Если кто-нибудь знает киньте код или хотя бы алгоритм.
Решение задачи: «Преобразование строки в числовой массив»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int Str2Arr(char *S, int *Arr)
- {
- int c,i,j,l,k;
- char q;
- l=strlen(S);
- c=0;
- k=0;
- j=0;
- for (i=0; i<l; i++)
- {
- q=S[i];
- if (q==' ')
- {
- if (k>0)
- {
- Arr[j++]=c; c=0; k=0;
- }
- }
- else
- {
- k=k+1;
- c=c*10+(q-'0');
- }
- }
- if (k>0)
- {
- Arr[j++]=c; c=0; k=0;
- };
- return j;
- }
- int main(int argc, char *argv[])
- {
- int Z[100];
- int i,n;
- char *Str="56 0 0 12 9 7 3";
- for (i=0; i<100; i++) Z[i]=0;
- n=Str2Arr(Str,Z);
- for (i=0; i<n; i++) printf("%d\n",Z[i]);
- system("PAUSE");
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
, , - Определяем функцию Str2Arr, которая принимает два аргумента: char S (строка) и int Arr (массив целых чисел).
- Внутри функции объявляем переменные:
- int c,i,j,l,k; - для хранения индексов и счетчиков
- char q; - для хранения символа
- l=strlen(S); - вычисляем длину строки
- c=0; - инициализируем счетчик
- k=0; - инициализируем счетчик
- j=0; - инициализируем счетчик
- Запускаем цикл 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 в соответствии с десятичной системой и добавляя значение текущего символа (в числовом формате)
- }
- После прохода по всем символам строки, проверяем значение k. Если оно больше 0, значит последнее число не было полностью обработано, и мы добавляем его в массив Arr.
- В функции main создаем массив Z[100] и инициализируем все его элементы значением 0.
- Затем вызываем функцию Str2Arr, передавая ей строку
56 0 0 12 9 7 3
и массив Z в качестве аргументов. - Результат работы функции сохраняем в переменной n.
- Затем с помощью цикла for выводим все элементы массива Z на экран.
- В конце программы вызываем функцию system(
PAUSE
), чтобы программа не закрылась сразу после вывода последнего элемента массива. - Возвращаем 0, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д