c - 数据不会被写入 C 中的文件中

标签 c file

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

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

#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);
}

上面的代码没有给出任何奇数。我的代码哪里出错了?

Output:

enter image description here

最佳答案

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

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);
}

关于c - 数据不会被写入 C 中的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42723601/

相关文章:

json - 如何使用 Powershell 将 JSON 对象保存到文件中?

file - 在 MATLAB 中以原子方式创建文件锁(文件互斥锁)

java - 从文件读取数组或向文件写入数组的最快方法?

c - sizeof(&array)返回什么?

c - sizeof 没有显示预期的输出

c - 警告 : assignment makes integer from pointer without a cast as return of the function call

c++ - 使用 ReadFile WinAPI 读取 'Binary' 文件

linux - 基于 Linux 的应用程序中同一文件夹中的许多图像

c - 在 Linux 中, stub 用于标准库。为什么需要 stub ?

创建太多进程,似乎只终止父进程