在C中,如何通过分隔符来分隔char数组?或者更好地操纵一个字符串?什么是一些很好的c char操作函数?C将char数组拆分为不同的变量
回答
#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,’”)。如果返回值为true,则可以打印另一个组。
谢谢你的代码,对不起愚蠢的问题,你为什么第二次使用strtok?另外,“如果返回值为true,您可以打印另一个组。”意思? – 2012-12-14 16:22:07
看看strtok()。 strtok()不是可重入函数。
strtok_r()是strtok()的重入版本。下面是从手动的示例方案:
,其上,将其从基于不同的定界符之前的令牌获得subtokens操作#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);
}
样品运行:
$ ./a.out hello:word:bye=abc:def:ghi = :
1: hello:word:bye
--> hello
--> word
--> bye
2: abc:def:ghi
--> abc
--> def
--> ghi
可以操纵一个字符数组或必须是一个字符串? – 2012-04-27 10:53:40
请不要推荐'strtok',它是不可重入的。它的“长大的兄弟”'strtok_r'好得多。 – dasblinkenlight 2012-04-27 10:54:07
@Thiruvalluvar:它不仅仅是线程安全 - 如果你想同时标记两个不同的字符串,例如在同一个循环中? – 2012-04-27 11:04:59
一个选项的strtok
示例:
char name[20];
//pretend name is set to the value "My name"
你想它在两个词之间的空间分割小号
split=strtok(name," ");
while(split != NULL)
{
word=split;
split=strtok(NULL," ");
}
你可以简单地替换由NULL字符分隔符,并存储在一个新的char *指针新创建的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;
}
[分割字符串在C分隔符(的
- 1. 将连续变量拆分为相同大小的组
- 2. 将getline()字符串拆分为多个int和char变量?
- 3. 将MySQL数组拆分为单独的php变量
- 4. 将数组拆分为多个数组并将其存储在不同的变量中
- 5. 如何将json数据拆分为2个不同的数组?
- 6. C#拆分字符串 - 将字符串拆分为数组
- 7. 将一个变量拆分为一个数组
- 8. 通过变量值将数组拆分为子阵列
- 9. 将字符数组拆分为分隔符为NUL的标记char
- 10. 必须将Objective-C消息拆分为不同的参数吗?
- 11. 将数组拆分为子数组
- 12. 将数组拆分为子数组
- 13. 拆分变量并推入数组
- 14. 将C中的字符串拆分为不同的部分
- 15. 拆分输入和在不同的变量存储C#
- 16. 将变量拆分为两个字段
- 17. 将字符串拆分为变量
- 18. 将行拆分为10个组,每个组的总数相同
- 19. 将字符串拆分成不同的变量
- 20. ggplot为多个变量(拆分变量)
- 21. 将一个数组拆分为相同数字的箱子
- 22. 拆分变量的数据为独立的变量
- 23. 将数据帧拆分为数组scala
- 24. visual studio c#将字符串拆分为变量
- 25. 将数组分隔为变量-PHP
- 26. 如何使用malloc将int变量转换为C中的char *数组?
- 27. 使用熊猫将数据框内的变量拆分为行
- 28. 将字符串拆分为不带分隔符的字符串数组C
- 29. 将NSString拆分为组件
- 30. 在C中拆分数组#
可能重复http://stackoverflow.com/questions/9210528/split-string-with-delimiters-in-c) – 2012-04-27 23:42:03