从文本文件中直接读取句子到char数组直到点分隔符

问题描述:

我正在努力将文本文件中的句子读入char数组。从文本文件中直接读取句子到char数组直到点分隔符

文本文件:

I am working at a gym. 
Someone has stolen my 
backpack. 
Everybody lies. 
Hello 
to 
everyone. 

预期结果(数组)

I am working at a gym. 
Someone has stolen my backpack. 
Everybody lies. 
Hello to everyone. 

首先我试着使用与fgets打印这些机能的研究那样:

FILE* file = fopen("zdania.txt", "r"); 
char line[256]; 

while (fgets(line, sizeof(line), file)) { 
    printf("%s", line); 
} 

fclose(file); 

return 0; 

但这是不好的解决方案,因为它逐行读取文件,在我的情况下,我不得不读取直到点的文字被发现。

我也试着用getc函数做一些事情,但是当找到点时它会停下来。

+1

那么输入“我的IP地址是127.0.0.1”呢? – pmg

+0

是的,这是一个很好的问题... –

int ch; 
while ((ch = fgetc(file)) != EOF) { 
    if (ch == '.') { 
     /* deal with dot */ 
    } else { 
     /* deal with non dot */ 
    } 
} 
/* deal with possibly unfinished data */ 
+0

谢谢,它工作得很好。无论如何,我有问题与新线处理,我添加了额外的条件,当char等于新行,然后什么都不做,但是现在它在每个下一句中产生额外的列表 –

+0

您可能需要识别两个(或更多)字符的序列并采取不同的行为。在对一个字母进行处理之后,应该对一个空格进行不同的处理,两条换行符应该与另一条新行处理的两倍处理方式不同...... – pmg

+0

好的,但是我怎样才能得到下一个字符就像你一样说吧? –

可以读取每个char直到.代替找到。可能使用fread而不是fgets,然后通过char查找结果数组char来查找.。另一种方法是使用strstr()