打印短于C

时间:2017-05-24 14:25:46

标签: c text

我想在屏幕上打印这些单词,其长度短于文本文件中所有单词的平均长度。

我的文字档案: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;
}

1 个答案:

答案 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;
 }