From 58bc0c37d1eff61b89b2b1954729bc6791c12b79 Mon Sep 17 00:00:00 2001 From: iridiumR Date: Thu, 30 Mar 2023 18:36:56 +0800 Subject: [PATCH] fix: fix error when " not pair --- line.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/line.c b/line.c index 24d1786..eab0d5d 100644 --- a/line.c +++ b/line.c @@ -42,29 +42,28 @@ char **splitLine(char *line) { int pair_flag = 0; while (1) { token = strtok(NULL, " \t\r\n\a"); - if (token[strlen(token) - 1] == '"') { + if (token == NULL && pair_flag == 0) { + fprintf(stderr, "error: no pair \"\n"); + return NULL; + } + /*if there exists a pair of "", break the loop*/ + if ((strlen(token)>1 && token[strlen(token) - 1] == '"') || (strlen(token)==1 && token[0] == '"')) { /*delete the last " */ token[strlen(token) - 1] = '\0'; strcat(temp, " "); strcat(temp, token); - token=temp; + token = temp; + pair_flag = 1; break; } else { strcat(temp, " "); strcat(temp, token); - pair_flag = 1; - } - if(token==NULL&&pair_flag==0){ - fprintf(stderr,"error: no pair \"\n"); - return NULL; } } - } - else - { - char* temp=malloc(bufsize * sizeof(char *)); - strcpy(temp,token); - token=temp; + } else { + char *temp = malloc(bufsize * sizeof(char *)); + strcpy(temp, token); + token = temp; } tokens[position] = token; #ifdef DEBUG