gpt4 book ai didi

c - 将句子(行)解析为单词

转载 作者:行者123 更新时间:2023-11-30 16:59:16 25 4
gpt4 key购买 nike

我需要您关于如何改进此代码或者我是否必须改进此代码的意见。它读取输入文件并将其解析为单词,然后将它们保存到某种动态结构中,例如链表或树。我想知道这是否有效或者是否可以更有效。

int maxSize = 256;
int currSize = maxSize;
int i = 0;
int j = 0;
int c;
char *line = (char*)malloc(maxSize);
char * pch; //

while((c = fgetc(input)) != EOF)
{
line[i++] = c;

if(c == '\n')
{
line[i] = '\0';
pch = strtok (line," ,()?/|.!-\n:;^[]");
while (pch != NULL)
{
//Here will be adding procedure
j++;
pch = strtok (NULL, " ,()?/|.!-\n:;^[]");
}

line = (char*)malloc(maxSize);
currSize = maxSize;
i = 0;
}

if(i == currSize)
{
currSize = i + maxSize;
line = (char*)realloc(line,currSize);
}
}

期待您的意见。谢谢。

最佳答案

从文件中读取一行并存储在数组中,然后从头开始读取数组并对其进行标记!!!

如果你可以直接标记每个单词,为什么还要这样做呢?附:如果您必须以不同的方式处理不同行的单词,可以通过分隔 case '\n':

    char *word=malloc(sizeof(char)*maxSize);
int i=0;
while(1){
switch(c=fgetc(stdin)){
case ',': case '(': case ')': case '?': case '/':
case '|': case '.': case '!': case '-': case '\n':
case ':': case ';': case '^': case '[': case']': case ' ':
word[i]='\0';
//call your function here
i=0;
break;
case EOF:
word[i]='\0'
if(i>0);
//call your function
//file is read completely
return;
default:
test[i++]=c;
}
if(i==maxSize); //reallocate
}

关于c - 将句子(行)解析为单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38282427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com