C - 从file.txt读取只有奇数行

时间:2017-11-27 19:50:36

标签: c arrays file

我有一个程序实现的问题,它将有3个函数:void read(char *文件名(程序将从该文件读取并从终端中具有奇数的行打印文本)...),void write (char * file_name1(程序将写入来自输入文件中具有奇数的行的字符数),char * file_name2(程序将以行的二进制数字写入 - 来自输入文件 - 具有奇数)...)和main将这些文件的名称作为参数。然后我将能够使用以下内容启动程序:./ a.out input.txt output.txt output.bin 在main函数中我有char数组[10] [80]。总之,我想从输入文件.txt中读取前10行,然后在终端中写入奇数索引的行,然后在这两行中保存字符数(如文本和二进制):.txt和.bin。

#include <stdio.h>
#include <string.h>
#define N 10
#define M 80


void read(char *file_name){
FILE *file_name;
file_name=fopen(".txt", "r");
char tab[80];
if (input==NULL) {
        printf("Error opening file");
        exit(-1);
        }
while(!feof(input)){
    fgets(tab, 80, input);
 }
}

void write(){
}


int main(int argc, char *argv[]){
char TEKST[N][M];
read(argv[1]);
write(argv[2], argv[3]);

return 0;
}

这是我开始编写的代码。我不知道如何将输入文件名作为参数传递给fopen函数,如何在终端中只打印输入文件中带有奇数索引的文本的行。以及如何计算这些行中的字符并将它们保存为2个文件:.txt和.bin。

提前致谢!

1 个答案:

答案 0 :(得分:-1)

我想你会得到第一行,把它放到输出字符串中,然后得到下一行并丢弃它。重复一遍,直到文件结束。

这样的事情:

#include <stdio.h>
#include <string.h>

int main()
{
    //open the file
    FILE * file;
    file = fopen("file.txt", "r");

    //the max number of characters per line
    const int maxCharsPerLine = 100; //you can change this number to whatever you want

    //the maximum amout of characters you want on the output
    const int maxOutputChars = 1000; //you can change this number to whatever you want

    //a c string to hold a single line of data at a time
    char currLine[maxCharsPerLine];

    //a c string to hold the odd lines of data
    char oddLines[maxOutputChars];
    memset(oddLines, 0, sizeof(oddLines));

//a c string to hold the even lines of data
char evenLines[maxCharsPerLine];

//while you are not at the end of the file
while (/*get a line of characters*/ fgets(currLine, maxCharsPerLine, file) != NULL)
{
    //update the line of characters
    strcat(oddLines, currLine);

    //discard a line of characters
    fgets(evenLines, maxCharsPerLine, file);
    memset(evenLines, 0, sizeof(evenLines));
}
fclose(file);

//print the odd lines
printf("%s", oddLines);
}