1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

TokenCounter of a string displaying not desirable results

  1. Oct 12, 2015 #1
    1. The problem statement, all variables and given/known data
    I am currently coding a program which reads a file and makes a graph based on the arrangement of the data in the file. The first line of the file stands for the number of vertices and the rest of the lines stand for the edges
    something like this:
    3
    1 2
    2 3
    3 4
    In the first line when I add a second number such as 4, so the first line looks like 3 4, my parseN function is supposed to display an error saying the first line is wrong hence there should be just one number. To achieve this, I use a counterToken function which counts the number of tokens in the first line. When I add this second number, the program works fine displaying the error, but then when I delete this second number and leave the text cursor 2 spaces away from the string in this case "3", my counterToken function begins to count 2 tokens all the time in the first line.
    2. Relevant equations
    Code (Text):
    int ParseN(char line[])
    {
        int verticesN;
        int NumberOfTokens=CountTokens(line);
        if(NumberOfTokens!=1)
            {
                printf("bad firstline\n");
                fflush(stdout);
                exit(0);
            }

        char* pt=strtok(line," -");
         verticesN=atoi(pt);
        return verticesN;
    }

    int CountTokens(char line[])
    {
        char clone[sizeof(line)];
        strcpy(clone,line);

              const char s[2] = " -";
              char *token;
              int number=0;
              token = strtok(clone,s);
              while( token != NULL )
              {
                  number++;
                 token = strtok(NULL,s);

              }
              free(token);

              return number;
    }

     
    3. The attempt at a solution
     
    Last edited by a moderator: Oct 13, 2015
  2. jcsd
  3. Oct 13, 2015 #2

    NascentOxygen

    User Avatar

    Staff: Mentor

    I think you're saying that if the first line contains a number with trailing spaces, your routine returns a count of two or more numbers?
     
  4. Oct 13, 2015 #3
    Yes
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted



Similar Discussions: TokenCounter of a string displaying not desirable results
  1. 7 segment display (Replies: 1)

Loading...