数据不存在';在C语言中不能写入文件

数据不存在';在C语言中不能写入文件,c,file,C,File,我正在尝试将数据输入到数据文件中,读取数据并分别在偶数和奇数文件中写入偶数和奇数 我编写了下面的代码,从用户那里获取输入并将其存储在DATA文件中。然后通过读取来检查数字是偶数还是奇数。如果该数字为偶数,则该数字将添加到偶数文件中,否则将添加到奇数文件中 #include<stdio.h> void main(){ FILE *DATA, *EVEN, *ODD; int number, i; printf("Enter Contents of the DATA file\n\

我正在尝试将数据输入到
数据
文件中,读取数据并分别在
偶数
奇数
文件中写入偶数和奇数

我编写了下面的代码,从用户那里获取输入并将其存储在
DATA
文件中。然后通过读取来检查数字是偶数还是奇数。如果该数字为偶数,则该数字将添加到
偶数文件中,否则将添加到
奇数文件中

#include<stdio.h>

void main(){

FILE *DATA, *EVEN, *ODD;
int number, i;

printf("Enter Contents of the DATA file\n\n");
DATA = fopen("DATA", "w");

for(i = 1; i<=30; i++){
    scanf("%d", &number);
    if(number == -1) break;
    putw(number, DATA);
}
fclose(DATA);

DATA = fopen("DATA", "r");
EVEN = fopen("EVEN", "w");
ODD = fopen("ODD", "w");

while((number = getw(DATA)) != EOF){
    if((number % 2 == 0)) putw(number, EVEN);
    else putw(number, ODD);
}

fclose(DATA);
fclose(EVEN);
fclose(ODD);

fopen("EVEN", "r");
fopen("ODD", "r");

printf("\n\nContents of EVEN file\n\n");
while((number = getw(EVEN)) != EOF) printf("%4d", number);

printf("\n\nContents of ODD file\n\n");
while((number = getw(ODD)) != EOF) printf("%4d", number);
}
#包括
void main(){
文件*数据,*偶数,*奇数;
整数,i;
printf(“输入数据文件的内容\n\n”);
数据=fopen(“数据”,“w”);

对于(i=1;i问题是1:在您的逻辑中(偶数测试应该是数字%2==0),您还需要在重新打开文件时设置文件指针。这里是固定代码:(我建议还检查文件何时打开,并在完成后关闭。)

void main(){
文件*数据,*偶数,*奇数;
整数,i;
printf(“输入数据文件的内容\n\n”);
数据=fopen(“数据”,“w”);
如果(日期==NULL)
{
//一些错误
}

对于(i=1;i
fopen(“偶数”、“r”);
-->
偶数=fopen(“偶数”、“r”);
,与“奇数”相同@YuriyIvaskevych噢!谢谢。我知道了。但你认为它为什么会输出我的代码,至少是
文件?当我更改这些打印语句的顺序时,它仍然只输出
文件。在
fclose
之后未定义的行为。YuriyIvaskevych请作为答案发布!不要发布文本图像!
putw(数字,(数字%2)?奇数:偶数);
void main() {

    FILE *DATA, *EVEN, *ODD;
    int number, i;

    printf("Enter Contents of the DATA file\n\n");
    DATA = fopen("DATA", "w");
    if (DATE == NULL)
    {
        // some error
    }

    for (i = 1; i <= 30; i++) {
        scanf("%d", &number);
        if (number == -1) break;
        putw(number, DATA);
    }
    fclose(DATA);

    DATA = fopen("DATA", "r");
    EVEN = fopen("EVEN", "w");
    ODD = fopen("ODD", "w");
    if (DATE == NULL || EVEN == NULL || ODD == NULL)
    {
        // some error
    }

    printf("\n\nData File Contains:\n");
    while ((number = getw(DATA)) != EOF) {
        if ((number % 2 == 0)) putw(number, EVEN);
        else putw(number, ODD);
        printf("%4d", number);
    }

    fclose(DATA);
    fclose(EVEN);
    fclose(ODD);

    EVEN = fopen("EVEN", "r");
    ODD = fopen("ODD", "r");

    printf("\n\nContents of EVEN file\n\n");
    while ((number = getw(EVEN)) != EOF) printf("%4d", number);

    printf("\n\nContents of ODD file\n\n");
    while ((number = getw(ODD)) != EOF) printf("%4d", number);

    printf("\nPressAnyKey\n");

    fclose(EVEN);
    fclose(ODD);
}