在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. 將數組拆分爲變量php
- 2. 將json數組拆分爲JS變量
- 3. 將JavaScript變量拆分爲組
- 4. 將C數組拆分爲n等分
- 5. 將連續變量拆分爲相同大小的組
- 6. 將一個數組拆分爲3個不同的數組
- 7. 將getline()字符串拆分爲多個int和char變量?
- 8. 如何將char數組轉換爲C中的長變量?
- 9. 將字符串拆分爲數組C
- 10. 將字符串拆分爲數組C++
- 11. 將MySQL數組拆分爲單獨的php變量
- 12. 將數組拆分爲多個數組並將其存儲在不同的變量中
- 13. C#拆分字符串 - 將字符串拆分爲數組
- 14. 如何將json數據拆分爲2個不同的數組?
- 15. 將JSON拆分爲數組
- 16. 如何在批處理中將變量拆分爲數組
- 17. 將一個變量拆分爲一個數組
- 18. 通過變量值將數組拆分爲子陣列
- 19. 將字符數組拆分爲分隔符爲NUL的標記char
- 20. 必須將Objective-C消息拆分爲不同的參數嗎?
- 21. C++將數組拆分爲2個獨立的數組
- 22. 將數組拆分爲子數組
- 23. 將數組拆分爲子數組
- 24. 將數組拆分爲兩個數組
- 25. C++:將不同部分的輸入分配給不同變量
- 26. 分配數組到不同的變量
- 27. 將C中的字符串拆分爲不同的部分
- 28. 拆分變量並推入數組
- 29. 拆分輸入和在不同的變量存儲C#
- 30. 將字符串拆分爲變量
可能重複http://stackoverflow.com/questions/9210528/split-string-with-delimiters-in-c) – 2012-04-27 23:42:03