Program pomijający początkowe znaki odstępu i tabulacji oraz usuwający całkowicie białe wiersze

0

Witam!
Napisałam program jak w temacie na 2 sposoby, czy są one ok?

#include <stdio.h>

#define MAKSYMALNY 1000

int pobierz_wiersz(char wiersz[], int lim);
void kopiuj(char doo[], char z[]);


main(){
	
	int dlugosc; 				
	int i, z; 				
	char wejsciowy[MAKSYMALNY]; 
	char wyjsciowy[MAKSYMALNY];  
	
	while ((dlugosc = pobierz_wiersz(wejsciowy, MAKSYMALNY)) > 0){
			
		kopiuj(wyjsciowy, wejsciowy);
		printf("%s", wyjsciowy);
	}
	
	return 0;
}

int pobierz_wiersz(char s[], int lim){
	
	int c, i;
	
	for (i = 0; i < lim -1  && (c = getchar()) != EOF && c != '\n'; i++)
		s[i] = c;
	if(c == '\n'){
		s[i] = c;
		i++;
	}
	s[i]='\0';
	return i;
}

void kopiuj(char doo[], char z[]){
	
	int i, k, lim;
	
	i = 0;
	while(z[i] != '\0'){
		
		if(z[i] == '\t' || z[i] == ' ')
			++i;
		else{
			
			for(k = 0; k < lim; ++k){
				doo[k]=z[i];
				++i;
			}
		break;
		}
	}
}
#include <stdio.h>

#define MAKSYMALNY 1000

int pobierz_wiersz(char wiersz[], int lim);
void kopiuj(char doo[], char z[]);

// Program pomija początkowe znaki odstępu i tabulacji oraz usuwa całkowicie białe wiersze

main(){
	
	int dlugosc; 				
	int i, z; 				
	char wejsciowy[MAKSYMALNY]; 
	char wyjsciowy[MAKSYMALNY];  
	
	while ((dlugosc = pobierz_wiersz(wejsciowy, MAKSYMALNY)) > 0){
			
		kopiuj(wyjsciowy, wejsciowy);
		for(i = 0; i <= dlugosc; ++i){
			if(wyjsciowy[i] != '\t' && wyjsciowy[i] != ' '){
				for(z = i; z <= dlugosc; ++z)
					printf("%c", wyjsciowy[z]);
				break;
			}
			else continue;
		}
		
	}
	
	return 0;
}

// wczytaj wiersz do s, podaj jego dlugosc

int pobierz_wiersz(char s[], int lim){
	
	int c, i;
	
	for (i = 0; i < lim -1  && (c = getchar()) != EOF && c != '\n'; i++)
		s[i] = c;
	if(c == '\n'){
		s[i] = c;
		i++;
	}
	s[i]='\0';
	return i;
}

//przepisz z "z" do "doo"; "doo" musi byc dostatecznie duze

void kopiuj(char doo[], char z[]){
	
	int i;
	
	i=0;
	while((doo[i] = z[i]) != '\0')
		i++;
}

Z góry dzięki za wszelką pomoc :)

1

A sam jak sądzisz, o ile wystarcza tylko tyle:

#include <stdio.h>

int main()
  {
   int c,last='\n';
   while((c=getchar())!=EOF)
     {
      if(c=='\n') putchar(last=c);
      else if((c!=' ')&&(c!='\t')) putchar(last=c);
      else if(last!='\n') putchar(c);
     }
   return 0;
  }

?

0

Jeżeli chcesz usuwać puste wiersze to:

#include <stdio.h>

int main()
  {
   int c,last='\n';
   while((c=getchar())!=EOF)
     {
      if(c=='\n') { if(last!='\n') putchar(last=c); }
      else if((c!=' ')&&(c!='\t')) putchar(last=c);
      else if(last!='\n') putchar(c);
     }
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1