我正在尝试将数据输入到DATA
文件中,读取它并分别在EVEN
和ODD
文件中写入偶数和奇数。
我编写了以下代码来获取用户的输入并将其存储在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:
最佳答案
问题是 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/