C split a char array into different variables

后端 未结 7 1074
不思量自难忘°
不思量自难忘° 2020-12-03 08:31

In C how can I separate a char array by a delimiter? Or is it better to manipulate a string? What are some good C char manipulation functions?

7条回答
  •  生来不讨喜
    2020-12-03 08:52

    Look at strtok(). strtok() is not a re-entrant function.

    strtok_r() is the re-entrant version of strtok(). Here's an example program from the manual:

       #include 
       #include 
       #include 
    
       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 run which operates on subtokens which was obtained from the previous token based on a different delimiter:

    $ ./a.out hello:word:bye=abc:def:ghi = :
    
    1: hello:word:bye
     --> hello
     --> word
     --> bye
    2: abc:def:ghi
     --> abc
     --> def
     --> ghi
    

提交回复
热议问题