Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

error, missing terminating character

Tags:

c

syntax-error

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
like image 230
monkey doodle Avatar asked Dec 12 '22 15:12

monkey doodle


1 Answers

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.

like image 88
simonc Avatar answered Dec 23 '22 04:12

simonc