在ubuntu上的eclipse中打开.txt文件时没有输出显示

时间:2018-05-25 07:30:02

标签: c linux eclipse

所以我试图在我的C程序中打开.txt(或.bin)文件。 当我运行代码时它给我0错误,但控制台显示为空。 我相当确定我的代码是正确的。 有没有什么我需要设置,以便能够在Linux上打开文件(我相当新)?喜欢许可,但是再次它会给我错误没有许可,对吗?

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

struct znakovi{
   int tocka;
   int upitnik;
   int usklicnik;
};
struct znakovi interpukcijski(FILE *f){
  int brojac_tocki=0,brojac_upitnika=0,brojac_usklicnika=0;
  char c;
  while((c==fgetc(f))!=EOF){
         if(c=='.')
           brojac_tocki++;
         if(c=='?')
           brojac_upitnika++;
         if(c=='!')
           brojac_usklicnika++;
  }
  struct znakovi z;
   z.tocka=brojac_tocki;
   z.upitnik=brojac_upitnika;
   z.usklicnik=brojac_usklicnika;
  return z;
}

int main(){
    struct znakovi d;
    FILE *f;
    f=fopen("/home/matej/pmalabos/vjezba1/zd.txt","r");
    if(f==NULL)
      return -1;
    d=interpukcijski(f);
    printf("%d %d %d",d.tocka,d.upitnik,d.usklicnik);
    fclose(f);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

你有一个表达式,你想要一个作业:

while((c==fgetc(f))!=EOF)

- &GT;

while((c=fgetc(f))!=EOF)

由于c未初始化,因此很可能导致&#34;垃圾&#34;与输入相比,可能&#34;假&#34;。
那么&#34;假&#34;与'EOF&#34;。进行比较 这更多地转化为&#34; 0!= - 1&#34;,这是真的 这将循环变成无限循环 这可以防止任何输出发生。

您还应该采用Anttii Haapalas的提示,为c使用正确的类型。

结束输出程序的另一种方法似乎是失败的文件打开。 要诊断对此的更改:

if(f==NULL)
{
  printf("File open error, leaving!\n");
  return -1;
}