Главная страница » Как строку чисел преобразовать в массив с

Как строку чисел преобразовать в массив с

  • автор:

Конвертация массива string в массив int C# одной строкой кода

Как можно конвертировать строку чисел, разделённых пробелом, в массив int одной строкой кода?

Поделил на строки, но как конвертировать это в массив int, не создавая дополнительного массива string, не знаю.

Правильнее будет написать

Раз уж пошел такой codegolf.

короткий вариант без LINQ, если не нужно вырезать пробелы:

чуть более длинный вариант для случая, когда нужно вырезать пробелы:

Минимальные варианты через LINQ без/c RemoveEmptyEntries

Мстислав Павлов's user avatar

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.17.43323

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

строка целых чисел в Си

Здравствуйте. Подскажите, как преобразовать строку вида:
char str[]="12 34 56 78";
в массив целых чисел:
int arr[n];
***
arr[0]=12
arr[1]=34
.

Длина строки неизвестна. Заранее спасибо.

Re: строка целых чисел в Си

Re: Re: строка целых чисел в Си

#include <stdio.h>
#include <malloc.h>

main()
<
char *b = "123 0x7 0777 -256 ";
int *t = NULL, n, i;
char *s;
for(n=0;; b = s) < // b - changed
long l = strtol(b, &s, 0); // You can use 10, see man
if(b==s) break;
t = realloc(t, sizeof(int)*(n+1));
t[n++] = l;
>
for(i=0; i<n; i++) <
printf("t[%d] = %d\n", i, t[i]);
>

Re: Re: строка целых чисел в Си

realloc медленный, по мне лучше посчитать кол-во пробелов и выделить сразу соответствующий кусок памяти, во первых если памяти не хватит мы об этом сразу узнаем а во вторых не будет постоянно переливать данные из пустого в порожнее

Re: Re: строка целых чисел в Си

Огромное спасибо, очень помогли.

Re: Re: Re: строка целых чисел в Си

Гы. А потом выяснитс я, что пробелов между числами — произвольное кол-во , а кроме того — там же будут и табы всех видов и проч. херня. Зачем велосипед-то изобретать? sscanf все это умеет делать, причем гораздо качественнее.

Re: Re: Re: Re: строка целых чисел в Си

Так что — первый вариант более правильный. Единственное НО. Перед запуском цикла неплохо бы отпозиционироваться на начало числа — ведь не факт, что строка начинается не с пробелов. Далее — по тексту возражений нет.

Re: Re: Re: Re: строка целых чисел в Си

ну каждому свое . если в строке хотя бы 100000 таких чисел то все умрет .. перегнать 20Tb это вам не быстрое занятие .. и еще в момент realloca() потребуется в _два_ раза больше памяти чем реально нужно .. и в конце концов когда ты прождешь три часа пока все это отработает realloc вывалится с ошибкой типа не хватает памяти батенька .. нет уж, по мне лучше написать минипарсер(даже не парсер .. две строки)

Re: Re: Re: Re: Re: строка целых чисел в Си

Ну, батенька — не надо передергивать. Когда такими объемами кидаются,
то речь явно не идет о массивах — как о непрерывных кусках памяти. В
вашем случае будет использован связный список и все неприятности с
реаллоком пропадут сами собой. Так что.

Как строку чисел преобразовать в массив с

Бесплатный курс по пентесту от Школы Кодебай

Запишись на вводный видеокурс по пентесту , состоящий из 24 уроков. Разные инструменты, тактики и навыки: сканирование сети, фаззинг, брутфорс, сниффинг, sql-инъекции, mimikatz, загрузка полезной нагрузки, эксплуатация разных уязвимостей, XSS, CSRF и немного Reverse-shell. Будет полезен для быстрой подготовки к CTF, а так же для прохождения курсов « SQL Injection Master » и « WAPT ».

Бесплатный курс SQL Injection от Школы Кодебай

Запишись на вводный курс по SQL инъекциям. Курс состоит из 6 видео уроков. К каждому уроку приложена методичка. Есть общий чат для учащихся. Будет полезен для быстрой подготовки к CTF, а так же для прохождения курсов « SQL Injection Master » и « WAPT ».

Преобразовать строку чисел в массив чисел С#?

У меня есть строка из 9 целых чисел, разделенных пробелами, например «3 4 6 9 8 8 2 3 4» , которую я хочу преобразовать в массив 3×3 int.

Простым решением является выполнение двух циклов над новой матрицей и преобразование значений строк
как я иду. Есть ли более элегантный способ сделать это?

Использование моего расширения Split из Разделить коллекцию на` n` части с LINQ?

В принципе, ваше решение так же хорошо, как и вы. Вы можете выполнить одно и то же с LINQ:

Для этой проблемы решение LINQ, вероятно, хуже обычного решения; однако идея может быть полезной для подобных проблем.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *