error, missing terminating character

39,323

In the line

char *token = strtok(inputstr, "\");

you need to use "\\" to specify a single backslash character.

A single backslash is treated as the start of a multi-character escape sequence.

Share:
39,323
monkey doodle
Author by

monkey doodle

Updated on July 14, 2022

Comments

  • monkey doodle
    monkey doodle almost 2 years

    I have this missing terminating character, but I'm not sure what it wants or needs. I believe it's inside its inside the while second while loop. what can be done to fix this. I'm trying to input a text file with a string of paths. And then from there I parse through this string and put it to a link list. and then create a search function afterwards.

    text file: path.txt

    a/a1.txt
    a/a2.txt
    a/b/b3.txt
    a/b/b4.txt
    a/c/c4.txt
    a/c/c5.txt
    a/c/d/d6.txt
    a/c/d/g
    a/c/d/h
    a/c/e/i/i7.txt
    a/c/f/j/k/k8.txt
    

    code:

    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct sMyPath{
            char *element;
            struct sMyPath *next;
    } tMyPath;
    
    
    int main(void)
    {
            FILE *pFile;
            pFile = fopen("path.txt", "r");
            char inputstr[1024];
            tMyPath *curr, *first = NULL, *last = NULL;
    
    //get the text file, and put it into a string inputstr
    
            if (pFile != NULL)
            {
                    while(!feof(pFile))
                    {
                            fgets(inputstr, sizeof(inputstr), pFile);
                    }
            fclose(pFile);
            }
            else
            {
                    printf("Could not open the file.\n");
            }
    
    //using tokens to get each piece of the string
    //seperate directories and text files, put it into a link list
    
            char *token = strtok(inputstr, "\");
            while (token != NULL)
            {
            if(last == NULL){
                    //creating node for directory
                    first = last = malloc (sizeof (*first));
                    first -> element = strdup (token);
                    first -> next = NULL;
            } else {
                    last -> next = malloc (sizeof (*last));
                    last = last -> next;
                    last -> element = strdup (token);
                    last -> next = NULL;
            }
            token = strtok(NULL, "\");
            }
    
    
    
    
    //ask user for txt file
            char pathU[20];
            printf("enter text file\n");
            gets(pathU);
    
    
    //check if text file exist, if yes output entires in text file, else say no
            while(first != NULL)
            {
                    if(strcmp (first -> element,pathU)==0)
                    {
                            FILE *nFile;
                            char texxt[300];
                            nFile = fopen(pathU, "r");
                            while (!feof(nFile))
                            {
                                    fgets(texxt, 300, nFile);
                                    printf("Theses are the contents\n");
                                    printf("%s", texxt);
                            }
    
                    }
    
                    else if(first == NULL)
                    {
                            printf("invalid file name\n");
                    }
    
                    else
                    {
                    first = first -> next;
                    }
    
    
    
    
            }
    
    return 0;
    }
    

    error:

    search.c:36:33: warning: missing terminating " character
    search.c: In function ‘main’:
    search.c:36: error: missing terminating " character
    search.c:37: error: expected expression before ‘while’
    search.c:50:24: warning: missing terminating " character
    search.c:50: error: missing terminating " character
    search.c:95: error: expected declaration or statement at end of input