Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言打印短于文本文件中单词平均长度的单词_C_Text - Fatal编程技术网

用C语言打印短于文本文件中单词平均长度的单词

用C语言打印短于文本文件中单词平均长度的单词,c,text,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\progg\fannikahelp\in1feladat.txt codeblocks返回时出现以下错误: 进

我想把单词打印到屏幕上,它的长度比文本文件中所有单词的平均长度短

我的文本文件: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\progg\fannikahelp\in1feladat.txt

codeblocks返回时出现以下错误: 进程终止,状态为-1073741819(0分钟,1秒))

调试:程序接收信号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;
}
#包括
#包括
#包括
int main()
{
文件*f1=fopen(“c:\users\lszima\desktop\progg\fannikahelp\in1feladat.txt”,“r”);
双atlag=0;
整数和=0;
int t[10];
int i=0;
char-szo[100];
而(!feof(f1)){
//萨瓦克·霍萨·贝尔拉卡·阿图姆贝
//fscanf(f1,“%s”,szo);
fgets(szo,100,f1);
t[i]=strlen(szo);
i++;
}
int j=0;

对于(j=0;j我找到了另一个更简单的解决方案,非常感谢大家的帮助

干杯

    #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;
 }
#包括
#包括
#包括
int main(){
charszo[50];
int db=0,sum=0;
文件*fin=fopen(“in1feladat.txt”,“r”);
而(fscanf(fin,“%s”,szo)!=EOF)
{sum+=strlen(szo);
db++;
}
双平均值=总和*1.0/db;
财务总监(财务);
fin=fopen(“inafeladat.txt”,“r”);
而(fscanf(fin,“%s”,szo)!=EOF)
{if(strlen(szo)>平均值)
printf(“%s\n”,szo);
}
财务总监(财务);
返回0;
}

对于初学者来说,这总是错误的。正在使用的文本文件的确切内容是什么?使用“代码格式”选项将其粘贴到问题中。现在在调试器中运行该程序。什么时候失败?从该点获取回溯,并将其放在问题中。此外,请正确缩进代码,并在运算符周围留出空格ors。现在它基本上是一个坚实的、不可读的块。除了一些地方没有明显原因的额外空行。检查
fopen
的返回值。你必须检查
i
是否低于10,为什么不直接计算while循环中的总和。你只需打开文件一次,然后更好地将路径传递给e文件作为命令行参数。强烈建议:
而不是第一次调用
fclose(f1)
,替换为
rewind(f1)`删除对
fopen()的第二次调用
强烈建议:遵循公理:*每行只有一条语句,(最多)每语句一个变量声明。这类事情:
{sum+=strlen(szo);
使代码更难阅读/理解/调试以便于可读性和理解:1)一致地缩进代码。在每个左大括号“{”之后缩进。在每个右大括号“}”之前缩进。建议每个缩进级别为4个空格。2)单独的代码块(for、if、else、while、do…while、switch、case、default)通过单个空行。此答案仍然无法检查(!=NULL)从
fopen()返回的值
以确保操作成功。省略常用的水平间距是模糊C代码的一种方法。这是一种糟糕的编程实践。如果编写的代码可读性很好,代码将完全相同。至少在括号内插入一个空格,在
(分号)和
(逗号)之后