Преобразование строки в числовой массив - 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, чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д