我想在屏幕上打印这些单词,其长度短于文本文件中所有单词的平均长度。
我的文字档案:in1feladat.txt
字样在这里:
negy
ötötö
hathat
hetheth
nyolcnyo
所以平均长度是6(4 + 5 + 6 + 7 + 8/5 = 6)所以程序应该写到屏幕上:negyötötö
我的txt位于main.c旁边,因此它位于项目文件夹中。 C:\ Users \ lszima \ Desktop \ proggg \ fannikahelp \ in1feladat.txt
codeblocks返回时出现以下错误: 处理终止,状态为-1073741819(0分钟,1秒(s))
debug:程序接收信号SIGSEGV,分段故障。 0x4013dd第16行是while(!feof(f1)
有人可以帮帮我,我做错了什么?
非常感谢。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *f1=fopen("c:\users\lszima\desktop\proggg\fannikahelp\in1feladat.txt","r");
double atlag=0;
int sum=0;
int t[10];
int i=0;
char szo[100];
while(!feof(f1)){
// szavak hossza belerakása a tömbbe
//fscanf(f1,"%s",szo);
fgets(szo,100,f1);
t[i]=strlen(szo);
i++;
}
int j=0;
for (j=0;j<i;j++)
sum+=t[j];
atlag=(double)sum/(i+1);
printf("atlag= %lf",atlag);
fclose(f1);
FILE *f1=fopen("c:\users\lszima\desktop\proggg\fannikahelp\in1feladat.txt","r");
char szavak[100];
while(!feof(f2)){
//fscanf(f2,"%s",szavak);
fgets(szavak,100,f2);
if(strlen(szavak)<atlag)
printf("%s ",szavak);
}
return 0;
}
答案 0 :(得分:0)
我找到了另一个更简单的解决方案,非常感谢你的帮助。
欢呼声。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char szo[50];
int db=0, sum=0;
FILE * fin=fopen("in1feladat.txt","r");
while(fscanf(fin,"%s",szo)!=EOF)
{sum+=strlen(szo);
db++;
}
double avg=sum*1.0/db;
fclose(fin);
fin=fopen("in1feladat.txt","r");
while(fscanf(fin,"%s",szo)!=EOF)
{if(strlen(szo)>avg)
printf("%s\n",szo);
}
fclose(fin);
return 0;
}