How to remove empty lines from a text file in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int isEmpty(const char* s) {
	char ch = "";
	do {
		ch = *(s++);
		if (ch != ' ' && ch != '\t' && ch != '\n' && ch != '\r' && ch != '\0')
			return 0;

	} while (ch != '\0');

	return 1;
}

void removeEmptyLines(char file[]) {
	char filetmp[32] = "tmp.txt";
	FILE* fp = fopen(file, "r");
	FILE* fptmp = fopen(filetmp, "w");

	if (fp == NULL || fptmp == NULL) {
		printf("Error open file\n");
		exit(EXIT_FAILURE);
	}

	char s[100];
	int i = 1;
	while ((fgets(s, 100, fp)) != NULL) {
		if (!isEmpty(s))
			fputs(s, fptmp);
		i++;
	}

	fclose(fp);
	fclose(fptmp);

	remove(file);
	rename(filetmp, file);
}

void readFile(char file[]) {
	FILE* fp = fopen(file, "r");

	char ch;
	while ((ch = fgetc(fp)) != EOF)
		putchar(ch);

	fclose(fp);
}

int main()
{
	char file[100] = "d:\\data.txt";

	readFile(file);

	removeEmptyLines(file);

	puts("\n--------------");

	readFile(file);

	return 0;
}




/*
run:
         
c c++ c#

java python

javascript php
--------------
c c++ c#
java python
javascript php
      
*/

 



answered Jul 9, 2020 by avibootz
edited Dec 15, 2022 by avibootz
...