【问题标题】:No output display when opening .txt files in eclipse on ubuntu在 ubuntu 上的 eclipse 中打开 .txt 文件时没有输出显示
【发布时间】:2018-11-04 12:44:37
【问题描述】:

所以我试图在我的 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;
}

【问题讨论】:

  • 使用调试器找出问题所在,激活警告并修复它们。
  • 程序结束了吗?成功了吗?
  • (c==fgetc(f))!=EOF --&gt; (c=fgetc(f))!=EOF

标签: c linux eclipse


【解决方案1】:

你有一个想要赋值的表达式:

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

->

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

由于c 没有初始化,这很可能导致“垃圾”与输入进行比较,可能是“假”。
然后将“false”与“EOF”进行比较。
这将更多或更少转换为“0!=-1”,这是真的。
这会将循环变成无限循环。
这可以防止任何输出发生。

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

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

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

【讨论】:

  • 我没有注意到 c==fgetc(f),谢谢。我改变了它,和 int c,但仍然没有显示在输出中。我做了基本的程序,FILE*f= fopen("something.txt","r");如果(f==NULL)返回-1。 something.txt 是空的,所以它应该返回-1,但又没有显示。我知道你的想法,.txt 的错误路径,但我检查了很多次。
  • 请编辑您的问题,添加类似“编辑:更改为= 后仍有问题......”并另外显示新代码。注意不要把问题改成完全不同的东西;在这种情况下,一个新的问题将是合适的。详细说明“仍然没有输出”似乎是公平的。请给我 14 小时的反应时间,我现在要上班了。
  • if 中插入printf("Error, leaving!\n");,在return -1; 之前。使用{} 这样做。
  • 打开空文件不一定会失败。
  • 请编辑您的问题以显示新代码。
猜你喜欢
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多