我有一个程序必须从文件中获得最长的句子 为了实现这个目的,我将第一句放在一个数组中,然后将未来的句子与当前最大的句子进行比较句子的大小代码不断崩溃(4.2周已停止工作
然而,比较这两个数组的行为并没有使我躲避 数组的current_sentence和longest_sentence都是80个字符长,但我想知道哪个实际上包含最长的句子(最长可以有80个字符)
我已经尝试了很多不同的解决方案(通过谷歌,其中大部分是stackoverflow的结果),但每次我尝试时返回的值是文件中的第一句,这使我相信检查本身完全失败,或者两个数组的长度都返回为80.
这些尝试包括(但是不限于):
if((sizeof(current_sentence)/sizeof(char)) < (sizeof(longest_sentence)/sizeof(char))
if(sizeof(current_sentence)/sizeof(current_sentence[0])) < (sizeof(longest_sentence)/sizeof(longest_sentence[0]))
这里是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *langste_regel(char *);
int main(void) {
/*
* stdout and stderr required for proper output
*/
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
char *s = langste_regel("vb1.txt");
if(s != NULL) {
printf("\nde langste regel is: %s\n", s);
free(s);
}
return 0;
}
char *langste_regel(char *filename) {
FILE *file;
file = fopen(filename, "r");
if(file == NULL) {
fprintf(stderr, "Kan bestand niet %s openen", filename);
}
char current_sentence[80];
int len = 2;
char *longest_sentence = (char *)malloc(sizeof(char) * len);
fgets(longest_sentence, 80, file);
while(fgets(current_sentence, 80, file)) {
if(sizeof(current_sentence) < sizeof(longest_sentence)) {
strncpy(longest_sentence, current_sentence, 80);
}
}
fclose(file);
return longest_sentence;
}
使用'strlen()'而不是'sizeof'。 'sizeof'是一个运算符,用于计算变量的大小。 'strlen()'是一个返回字符串长度的函数。 –