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 */