सी में मैं एक डेलीमीटर द्वारा एक चार सरणी कैसे अलग कर सकता हूं? या एक स्ट्रिंग में हेरफेर करना बेहतर है? कुछ अच्छे सी चार मैनिपुलेशन कार्यों क्या हैं?सी विभिन्न चरों में एक चार सरणी विभाजित
उत्तर
#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 का उपयोग करना चाहिए (इनपुट, ",")। इनपुट स्ट्रिंग क्या आप strtok का उपयोग spilt.Then करना चाहते हैं देख सकते हैं (शून्य, ",")। यदि वापसी मूल्य सत्य है, तो आप दूसरे समूह को प्रिंट कर सकते हैं।
कोड के लिए धन्यवाद, क्षमा करें बेवकूफ सवाल, आप दूसरी बार स्ट्रोक का उपयोग क्यों कर रहे हैं? साथ ही, "क्या वापसी मूल्य सत्य है, तो आप दूसरे समूह को प्रिंट कर सकते हैं।" क्या मतलब है? –
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);
}
नमूना रन जो subtokens जो पिछले टोकन एक अलग परिसीमक के आधार पर से प्राप्त हुई थी पर चल रही है:
$ ./a.out hello:word:bye=abc:def:ghi = :
1: hello:word:bye
--> hello
--> word
--> bye
2: abc:def:ghi
--> abc
--> def
--> ghi
क्या यह एक चार सरणी में हेरफेर कर सकता है या यह एक स्ट्रिंग होना चाहिए? –
कृपया 'स्ट्रोकोक' की अनुशंसा न करें, यह गैर-पुनर्वित्तक है। इसका "बड़ा भाई" 'strtok_r' बहुत बेहतर है। – dasblinkenlight
@ तिरुवल्लुवार: यह केवल थ्रेड-सुरक्षा नहीं है - क्या होगा यदि आप एक ही समय में दो अलग-अलग तारों को टोकन करना चाहते हैं, उदा। एक ही लूप में? –
एक विकल्प strtok
उदाहरण है यहां पुस्तिका से एक उदाहरण कार्यक्रम है :
char name[20];
//pretend name is set to the value "My name"
आप इसे दो शब्दों के बीच की जगह पर विभाजित करना चाहते हैं रों
split=strtok(name," ");
while(split != NULL)
{
word=split;
split=strtok(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 से अधिक विभाजक वर्ण हैं तो काम न करें।
मैं हूँ.यह के साथ आया था सबसे अच्छा काम करने के लिए 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. सी ++, एक चार सरणी
- 2. चार सरणी सी
- 3. एक चार सरणी में एक int स्टोर?
- 4. सी - चार सरणी
- 5. एक चार सरणी
- 6. एक चार सरणी
- 7. चार सरणी वी.एस. चार *
- 8. सी # में एक चार **
- 9. मार्शलिंग सरणी सी # में चार को **
- 10. चार सरणी
- 11. चार सरणी बनाम चार सूचक
- 12. एक शाब्दिक स्ट्रिंग को एक चार सरणी असाइन करें - सी ++
- 13. सी # स्ट्रिंग के लिए चार और चार सरणी असाइन करें?
- 14. चार सरणी का संरेखण
- 15. विभिन्न सरणी
- 16. सी ++ की तुलना करें चार सरणी स्ट्रिंग
- 17. एक सरणी कैसे विभाजित करें?
- 18. सी ++ चार सरणी शून्य टर्मिनेटर स्थान
- 19. क्रमबद्ध सी में विभिन्न अनुक्रमित द्वारा सरणियों की एक सरणी
- 20. सी चार से चार *
- 21. strtok - बनाम चार सूचक चार सरणी
- 22. सी चार को चार *
- 23. अद्वितीय जोड़े में विभाजित सरणी
- 24. चार सरणी सबस्क्रिप्ट चेतावनी
- 25. सरणी सरणियों चार को
- 26. जावा चार सरणी int
- 27. स्प्लिट सी में एक सरणी ++
- 28. डाली चार सरणी पूर्णांक
- 29. चार सरणी बेलन शून्य *
- 30. क्यों एक चार सरणी को शून्य वर्ण
संभव डुप्लिकेट http://stackoverflow.com/questions/9210528/split-string-with-delimiters-in-c) –