Конвертация массива string в массив int C# одной строкой кода
Как можно конвертировать строку чисел, разделённых пробелом, в массив int одной строкой кода?
Поделил на строки, но как конвертировать это в массив int, не создавая дополнительного массива string, не знаю.
Правильнее будет написать
Раз уж пошел такой codegolf.
короткий вариант без LINQ, если не нужно вырезать пробелы:
чуть более длинный вариант для случая, когда нужно вырезать пробелы:
Минимальные варианты через LINQ без/c RemoveEmptyEntries
Дизайн сайта / логотип © 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, вероятно, хуже обычного решения; однако идея может быть полезной для подобных проблем.