我编写了代码以查找单引号或双引号,一系列字符或“|”的开始和结尾。然后将这些值放入数组中。出于某种原因我不断收到段错误。此外,之后,如何显示表格以查看它是否正常工作?解析字符串并将令牌的索引放入表中
int parsing(const char *commandline, int array[])
{
int number= 0;
int index = 0;
while(commandline[index]!= '\0'){
/* when you have spaces*/
if (isspace(commandline[index]))
index++;
/* when you have double quotes*/
if(commandline[index] == '"'){
printf("running");
array[number] = index;
number++;
index++;
while(commandline[index] != '"' || '\0')
index++;
if(commandline[index] == '\0')
return printf("ERROR: Quote not ended");
array[number]= index;
number++;
}
/* when you have single quotes*/
if(commandline[index] == '\''){
array[number] = index;
number++;
index++;
while(commandline[index] != '\'' || '\0')
index++;
if(commandline[index] == '\0')
return printf("ERROR: Quote not ended");
array[number]= index;
number++;
}
/* when you have |*/
if (commandline[index] == '|')
{
array[number] = index;
number++;
}
/* when you have only letters*/
if(isalnum(commandline[index])){
array[number] = index;
index++;
number++;
while (isalnum(commandline[index]))
index++;
array[number] = index;
}
}
return *array;
}
编辑:添加错误检查
如果有什么最后一个字符是一个空间?或者是第二个''“''?或者如果字符串没有*第二个''”''? –
我还没有这样做,我试图看看是否这么多工作 – user3288169
使用gdb来检查段错误的行。要显示你的数组,使用一个简单的for循环,并用printf显示每个条目。 – gnidmoo