C 同名输入/输出问题

C 同名输入/输出问题,c,input,io,C,Input,Io,好了,伙计们,我的程序还有一个问题。 我在使用相同的文件名(KnightsBall.“扩展名”)时遇到问题。我不知道这是本地的问题,还是当我将代码移到上面时会遇到的问题。有人能帮我做我忽略的事情吗?输出和输入必须都指向同一个文件名。(in)或(out),因此没有办法。如果我将输出文件更改为knights.out,它会工作。有什么想法吗? 相关代码段: FILE *fr; FILE *fo; typedef struct KnightsBallLottoPlayer { char first

好了,伙计们,我的程序还有一个问题。 我在使用相同的文件名(KnightsBall.“扩展名”)时遇到问题。我不知道这是本地的问题,还是当我将代码移到上面时会遇到的问题。有人能帮我做我忽略的事情吗?输出和输入必须都指向同一个文件名。(in)或(out),因此没有办法。如果我将输出文件更改为
knights.out
,它会工作。有什么想法吗? 相关代码段:

FILE *fr; 
FILE *fo;

typedef struct KnightsBallLottoPlayer 
{
char firstName[20];
char lastName[20];
int numbers[6];
} KBLottoPlayer;


int main()
{
KBLottoPlayer *temp;
int numPlays=0;
//What file to read from
fr = fopen("KnightsBall.in", "r");
//What file to read to
fo = fopen("KnightsBall.out", "w");
以及访问输出的部分:

if(match==3)
    fprintf(fo,"%s %s matched %d numbers and won $10.\n", temp[r].firstName, temp[r].lastName, match);
if(match==4)
    fprintf(fo,"%s %s matched %d numbers and won $100.\n", temp[r].firstName, temp[r].lastName, match);
if(match==5)
    fprintf(fo,"%s %s matched %d numbers and won $10000.\n", temp[r].firstName, temp[r].lastName, match);
if(match==6)
    fprintf(fo,"%s %s matched %d numbers and won $1000000.\n", temp[r].firstName, temp[r].lastName, match);

还有一个完全不相关的方面,在我扫描用户需要的值后,有人知道如何关闭命令提示符吗?非常感谢您提供的所有帮助。

由于您没有显示检查是否成功打开每个文件的代码,因此很可能您没有打开输出文件。原因尚不清楚,但一个可能的问题是输出文件已经存在并且是只读的。另一个可能是您没有在目录中创建文件的权限

我忍不住认为可以使用字符串数组将打印减少到:

static const char *amounts[] = { "", "", "", "10", "100", "10000", "1000000" };
if (match >= 3 && match <= 6)
    fprintf(fo, "%s %s matched %d numbers and won $%s.\n",
            temp[r].firstName, temp[r].lastName, match, amounts[match]);
static const char*amounts[]={“,”,“10”,“100”,“10000”,“1000000”};

如果(match>=3&&match我不太确定你的问题是什么。你说你在同时读写KightsBall.in时有问题吗?没有。我是从KnightsBall.in读入的。处理完信息后,我必须将fprintf语句输出到KnightsBall.out。我的问题是,读入总是有效的,但写出来是有效的改为KnightsBall.out对文件没有任何影响。如果我将KnightsBall.out改为Knights.out,效果会非常好。有什么想法吗?啊,我明白了;这很奇怪。你确定只有在使用fclose()关闭文件后才检查文件内容吗?我从不使用fclose()关闭文件实际上,我试过了,但也没用。创建一个名为“KnightsBall.out”的空文件手动。运行您的程序。如果这不起作用,则在其他地方有一个错误,此处未显示。如果文件打开失败,则
fo
将为
NULL
,那么fprintf不会导致分段错误吗?但是,正如您提到的,错误代码尚未发布。通常,在Unix ish框中,您我不知道你在Windows上得到了什么;关于“如何关闭命令提示符”的部分问题建议使用Windows平台。但是,从技术上讲,你会得到未定义的行为;任何事情都可能发生,这是正常的。