如何解析用逗号分隔的字符串?
Char *strings = "1,5,95,255"
我想将每个数字存储到一个int变量中,然后将其打印出来。
例如,输出变为这样。
值1 = 1
value2 = 5
Value3 = 95
value4 = 255
我想在循环中执行此操作,因此如果我在字符串中有超过4个值,我应该能够获得其余的值。
我想看看这个例子。 我知道这对你们很多人来说非常基础,但我发现它有点挑战性。
谢谢
从cplusplus strtok
示例修改:
#include #include int main () { char str[] ="1,2,3,4,5"; char *pt; pt = strtok (str,","); while (pt != NULL) { int a = atoi(pt); printf("%d\n", a); pt = strtok (NULL, ","); } return 0; }
我不知道上面评论中提到的function,但是按照你要求的方式做你想做的事我会尝试这个或类似的东西。
char *strings = "1,5,95,255"; char number; int i = 0; int value = 1; printf ("value%d = ", value); value++; while (strings[i] != NULL) { number = string[i]; i++; if (number == ',') printf("\nvalue%d = ",value++); else printf("%s",&number); }
如果你没有可修改的字符串,我会使用strchr
。 搜索下一个,
然后像那样扫描
#define MAX_LENGTH_OF_NUMBER 9 char *string = "1,5,95,255"; char *comma; char *position; // number has 9 digits plus \0 char number[MAX_LENGTH_OF_NUMBER + 1]; comma = strchr (string, ','); position = string; while (comma) { int i = 0; while (position < comma && i <= MAX_LENGTH_OF_NUMBER) { number[i] = *position; i++; position++; } // Add a NULL to the end of the string number[i] = '\0'; printf("Value is %d\n", atoi (number)); // Position is now the comma, skip it past position++; comma = strchr (position, ','); } // Now there's no more commas in the string so the final value is simply the rest of the string printf("Value is %d\n", atoi (position)l