[C] Usuwanie spacji

dpiotrow
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 7 cze 2009, o 13:59
Płeć: Kobieta
Podziękował: 4 razy

[C] Usuwanie spacji

Post autor: dpiotrow »

Potrzebuję program w języku c, który będzie usuwał spacje ze zdania. Mam taki kod:

Kod: Zaznacz cały

#include <stdio.h>
#define BLANK ' '

int main ()
{
	char tab1[BUFSIZ], tab2[BUFSIZ];
	int i, j=0;
	
	printf("Wprowadz zdanie: ");
	scanf("%s", &tab1);
	for(i=0; tab1[i]!='\0'; i++){
	if(tab1[i]!=BLANK){
	tab2[j++]=tab1[i];
}
}
for(j=0; j<20; j++){
 printf("%s\n", &tab1[j]);}
return 0;
}
ale niestety wynik mija się z celem...
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

[C] Usuwanie spacji

Post autor: spajder »

Nie kompilowałem, ale:
1. musisz zakończyć drugi ciąg znaków zerem (bo ono nie jest kopiowane)
2. nigdzie nie widzę makra BUFSIZ, którego używasz. Trzeba je zdefiniować
3. nie wypisuj w pętli, tylko po prostu:

Kod: Zaznacz cały

printf("%s", tab2);
oczywiście ma to sens tylko po wcześniejszych poprawkach.
dpiotrow
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 7 cze 2009, o 13:59
Płeć: Kobieta
Podziękował: 4 razy

[C] Usuwanie spacji

Post autor: dpiotrow »

hmmm teraz wypisuje mi do momentu spacji, reszty już nie chce
w sensie dla: ala ma kota
wypisuje: ala
jasny
Użytkownik
Użytkownik
Posty: 845
Rejestracja: 2 kwie 2006, o 23:32
Płeć: Mężczyzna
Lokalizacja: Limanowa
Pomógł: 191 razy

[C] Usuwanie spacji

Post autor: jasny »

Kod: Zaznacz cały

void usunspacje(char* s) {
     int p = -1, q = 0;
     while (s[++p] != '\0') if (s[p] != ' ') s[q++] = s[p];
     s[q] = '\0';
}
Funkcja usuwająca spacje, zmieniająca podany łańcuch.
robin5hood
Użytkownik
Użytkownik
Posty: 1676
Rejestracja: 2 kwie 2007, o 14:43
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 178 razy
Pomógł: 17 razy

[C] Usuwanie spacji

Post autor: robin5hood »

Kod: Zaznacz cały

#include <stdio.h>
int usun(char *t){
   for ( ;*t=*(t+1); t++);
}

int main(){
   char s[256],
      *p;
   printf( "wpisz ciag znakow
");
   gets(s);
   for (p=s; *p; p++)
      if(*p == )
         usun(p);
  printf(s);

}
Yoe
Użytkownik
Użytkownik
Posty: 14
Rejestracja: 21 lut 2009, o 14:26
Płeć: Mężczyzna

[C] Usuwanie spacji

Post autor: Yoe »

A jak zrobić usuwanie tylko zbędnych spacji? tak żeby jednej nie usuwało, a jak są dwie to jedną?-- 30 gru 2010, o 14:23 --dobra nieważne już się udało
ODPOWIEDZ