В C Как я могу выделить массив символов разделителем? или лучше манипулировать строкой? каковы некоторые хорошие функции манипуляции c char?C разделить массив символов на разные переменные
ответ
#include<string.h>
#include<stdio.h>
int main()
{
char input[16] = "abc,d";
char *p;
p = strtok(input, ",");
if(p)
{
printf("%s\n", p);
}
p = strtok(NULL, ",");
if(p)
printf("%s\n", p);
return 0;
}
вы можете посмотреть эту программу .Первый вы должны использовать strtok (вход «„). Вход является строка, которую вы хотите spilt.Then использовать strtok (NULL,“,»). Если возвращаемое значение истинно, вы можете распечатать другую группу.
Спасибо за код, извините, тупой вопрос, почему вы используете strtok во второй раз? Кроме того, что означает «Если возвращаемое значение истинно, вы можете распечатать другую группу». имею в виду? –
Посмотрите на strtok(). strtok() не является функцией повторного входа.
strtok_r() является повторной версией strtok(). Вот пример программа из руководства:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *str1, *str2, *token, *subtoken;
char *saveptr1, *saveptr2;
int j;
if (argc != 4) {
fprintf(stderr, "Usage: %s string delim subdelim\n",argv[0]);
exit(EXIT_FAILURE);
}
for (j = 1, str1 = argv[1]; ; j++, str1 = NULL) {
token = strtok_r(str1, argv[2], &saveptr1);
if (token == NULL)
break;
printf("%d: %s\n", j, token);
for (str2 = token; ; str2 = NULL) {
subtoken = strtok_r(str2, argv[3], &saveptr2);
if (subtoken == NULL)
break;
printf(" --> %s\n", subtoken);
}
}
exit(EXIT_SUCCESS);
}
Sample бега, который действует на subtokens, который был получен из предыдущих маркеров на основе другого разделителя:
$ ./a.out hello:word:bye=abc:def:ghi = :
1: hello:word:bye
--> hello
--> word
--> bye
2: abc:def:ghi
--> abc
--> def
--> ghi
Может ли это манипулировать массивом char или быть строкой? –
Пожалуйста, не рекомендуем 'strtok', он не реентерабелен. Его «взрослый брат» 'strtok_r' намного лучше. – dasblinkenlight
@Thiruvalluvar: это не только безопасность потоков - что делать, если вы хотите одновременно использовать две разные строки, например. в том же цикле? –
Одним из вариантов является strtok
примера :
char name[20];
//pretend name is set to the value "My name"
Вы хотите разбить его на пространство между двумя словами s
split=strtok(name," ");
while(split != NULL)
{
word=split;
split=strtok(NULL," ");
}
Вы можете просто заменить символы разделителей от NULL символов, а также хранить адрес после вновь созданного символа НОЛЬ в новом символ * указатель:
char* input = "asdf|qwer"
char* parts[10];
int partcount = 0;
parts[partcount++] = input;
char* ptr = input;
while(*ptr) { //check if the string is over
if(*ptr == '|') {
*ptr = 0;
parts[partcount++] = ptr + 1;
}
ptr++;
}
Следует заметить, что этот код будет, конечно, не работают, если строка ввода содержит более 9 символов разделителя.
я придумал this.This, кажется, работает лучше всего для me.It преобразует строку числа и разбивает его на массив целого:
void splitInput(int arr[], int sizeArr, char num[])
{
for(int i = 0; i < sizeArr; i++)
// We are subtracting 48 because the numbers in ASCII starts at 48.
arr[i] = (int)num[i] - 48;
}
- 1. Разделить строку на массив символов в C++
- 2. Разделить строку на массив символов - Objective-C
- 3. Как разделить массив символов
- 4. Разделить массив символов с помощью strtok() C
- 5. Как разделить массив на три разные части?
- 6. Разделить массив строк в 2d массив символов
- 7. Разбиение текстового файла на разные переменные C#
- 8. C массив # Разделить на отдельные переменные, используя синтаксический сахар
- 9. Разделить и обработать строку в C++ в разные переменные
- 10. Разделить массив символов в токенах
- 11. Javascript, как разделить строку символов в переменные
- 12. Разделить время на две переменные в C#
- 13. Разделить на две переменные?
- 14. C разделить wchar_t массив
- 15. Разделить две разные строки в один массив?
- 16. указатель на массив символов C++
- 17. массив MessageBox символов C++
- 18. Разделить строку на массив на основе пробегов смежных символов
- 19. Есть ли простой способ разделить NSString на массив символов?
- 20. PHP - разные переменные с строки, один массив
- 21. Существующая строка/массив, содержащий разные типы символов в C
- 22. Разделить строку на основе ряда символов
- 23. Разделить массив символов в отдельные строки
- 24. Разделение массива на разные переменные
- 25. Разделить основной класс на разные файлы
- 26. C# Разделить массив на фиксированное число диапазонов
- 27. Разделить NSString на массив в Objective-C
- 28. Разделить строку на массив слов + C
- 29. Разделить строку на массив в C
- 30. Разделить строку на целочисленный массив в C
возможно дубликат [Split строки с разделителями в C] (http://stackoverflow.com/questions/9210528/split-string-with-delimiters-in-c) –