C 将句子从文本文件读到字符数组,直到使用点分隔符为止

C 将句子从文本文件读到字符数组,直到使用点分隔符为止,c,arrays,C,Arrays,我正在努力将文本文件中的句子读入字符数组 文本文件: 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)) {

我正在努力将文本文件中的句子读入字符数组

文本文件:

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函数做一些事情,但是当找到点时它就停止了

您可以读取每个
字符
,直到找到
。可能使用
fread
而不是
fgets
,然后逐字符检查结果数组以查找
。另一种方法是使用
strstr()
您可以读取每个
char
,直到找到
。可能使用
fread
而不是
fgets
,然后逐字符检查结果数组以查找
。另一种方法是使用
strstr()

输入“我的IP地址是127.0.0.1”怎么样?是的,这是一个好问题…输入“我的IP地址是127.0.0.1”怎么样?是的,这是一个好问题…谢谢,它工作得很好。无论如何,我对新行处理有问题,我添加了额外的if条件,当char等于新行时,什么也不做。但现在它在下一个句子中产生额外的表格。你可能需要识别两个(或更多)字符的序列,并采取不同的行动。点后的空格应与字母后的空格区别对待。两个新行加在一起的处理方式可能会不同于一个新行的两倍。。。好的,但我怎样才能让下一个字符像你说的那样去做呢?一个常用的方法是使用状态机。或者您可以保留两个变量,并为这两个变量编写条件:
if(ch1=='.&&ch2=='')。
谢谢,它工作得很好。无论如何,我对新行处理有问题,我添加了额外的if条件,当char等于新行时,什么也不做。但现在它在下一个句子中产生额外的表格。你可能需要识别两个(或更多)字符的序列,并采取不同的行动。点后的空格应与字母后的空格区别对待。两个新行加在一起的处理方式可能会不同于一个新行的两倍。。。好的,但我怎样才能让下一个字符像你说的那样去做呢?一个常用的方法是使用状态机。或者,您可以保留两个变量,并为这两个变量编写条件:
if(ch1=='.&&ch2=='')。
int ch;
while ((ch = fgetc(file)) != EOF) {
    if (ch == '.') {
        /* deal with dot */
    } else {
        /* deal with non dot */
    }
}
/* deal with possibly unfinished data */
int ch;
while ((ch = fgetc(file)) != EOF) {
    if (ch == '.') {
        /* deal with dot */
    } else {
        /* deal with non dot */
    }
}
/* deal with possibly unfinished data */