C-使用getChar()读取输入时的分割故障



我在使用以下代码阅读输入时有一个愚蠢的问题。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

void read(char*** query)
{
    *query = (char**) malloc ( sizeof(char*) );
    int f=0;
    int i=0,j=0,c;
    while((c=getchar())!=EOF)
    {
        if(!isalpha(c))
            continue;
        if(f==1)
            *query=(char**) realloc(*query,(i+1)*sizeof(char*));
        (*query)[i]=(char*) malloc(sizeof(char));
        (*query)[i][j]=tolower(c);
        j++;
        while( (c=getchar())!=EOF&&c!=' '&&c!='t'&&c!='n' )
        {
            (*query)[i]=(char*) realloc((*query)[i],(j+1)*sizeof(char));
            (*query)[i][j]=tolower(c);
            ++j;
        }
        (*query)[i][j]='';
        ++i;
        f=1;
        j=0;
        if(c==EOF)
        {
            *query=(char**) realloc(*query,(i+1)*sizeof(char*));
            query[i]=NULL;
            return;
        }
    }

    *query=(char**) realloc(*query,(i+1)*sizeof(char*));
    query[i]=NULL;
}
int main()
{
    char** query;
    int i=0;
    read(&query);
    while(query[i]!=NULL)
    {
        printf("%sn",query[i]);
        i++;
    }
    return 0;
}

因此,我想输入任何数量的字符串,这些字符串由字母字符组成,这些字符沿单行沿单行分隔的任何数量的空格和选项卡组成,然后按Enter并给出eof Signal。(Linux终端下的Ctrl D通过线路输出字符串线。问题是当我输入3个字符串时,它会产生细分故障,但是当我输入或多或少的字符串时,没问题。有什么问题?请帮忙!

query[i]=NULL;错误。 - BluePixy

@bluepixy:好接收。另外,在OP的逻辑中,应该在

之前进行重新分配
(*query)[i][j]='';

腾出空间为空字符。 - M OEHM

相关内容

  • 没有找到相关文章

最新更新