我正在尝试以相反的顺序打印文件。我正在使用数组来保存每一行数据。到目前为止,我能够按正常顺序打印每一行。
index是我引用的行数和FuncIndex相同的东西,但已在函数中再次声明。
file = fopen("../quotes.data","r");
while (NumOfField == 8) {
NumOfField = fscanf(file,"%d,%c,%d,%d,%c,%c,%lf,%lf", "e[index], &roomletter[index], &length[index], &width[index], &paint[index], &ceiling[index], &cost[index], &setup_cost[index]);
index++;
}
index--;
fclose(file);
在功能:
int FuncIndex;
for (FuncIndex = 0; FuncIndex <= index; FuncIndex++) {
printf("\n%5d %1c %3d %3d %1c %1c %8.2lf %6.2lf", quote[FuncIndex], roomletter[FuncIndex], length[FuncIndex], width[FuncIndex], paint[FuncIndex], ceiling[FuncIndex], cost[FuncIndex], setup_cost[FuncIndex]);
}
现在我尝试将for循环更改为:
for (FuncIndex = index; FuncIndex >= 0; FuncIndex--) >
但输出打印为空。虽然当我将0更改为任何数字时,会打印相应的行。
打印的输出是:
Quote Room Length Width Paint Ceiling Cost Setup
===== ==== ====== ===== ===== ======= ======= =====
531 A 10 10 b n 96.00 100.00
531 B 15 15 b n 144.00 0.00
531 C 20 20 b n 192.00 0.00
我希望将此输出反转为:
Quote Room Length Width Paint Ceiling Cost Setup
===== ==== ====== ===== ===== ======= ======= =====
531 C 20 20 b n 192.00 0.00
531 B 15 15 b n 144.00 0.00
531 A 10 10 b n 96.00 100.00
如果我把输出放在代码部分,请原谅我,因为格式化会改变
谢谢。
答案 0 :(得分:0)
也许您应该发布所有代码(但是,尝试将其减少到最低限度)。这对我有用:
文件input.txt
530 A 531 B 532 C
#include <stdio.h>
#include <conio.h>
#define MAX_LINES 50
int main()
{
FILE* file;
int NumOfField = 2;
int index = 0;
char roomLetter[ MAX_LINES ];
int quote [ MAX_LINES ];
file = fopen("input.txt","r");
while ( NumOfField == 2 ) {
NumOfField = fscanf(file,"%d %c\n", "e[index], &roomLetter[index]);
index++;
}
fclose(file);
index--;
for(; index >=0; index-- )
printf( "%d %c\n", quote[index], roomLetter[index] );
getch();
return 0;
}
答案 1 :(得分:0)
好的,这是我的问题的答案:
EOF就是伎俩
for (FuncIndex = index; FuncIndex != EOF; FuncIndex--)
基本上,在这里你要说的是,无论索引的数量是多少(行数)将它放在FuncIndex中然后逐个(从最高的数字)检查每一行,直到它不再是行尾。