gpt4 book ai didi

c - 在 ubuntu 上的 eclipse 中打开 .txt 文件时无输出显示

转载 作者:太空宇宙 更新时间:2023-11-04 10:08:37 25 4
gpt4 key购买 nike

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

最佳答案

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

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

->

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

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

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

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

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

关于c - 在 ubuntu 上的 eclipse 中打开 .txt 文件时无输出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50523739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com