Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Usuwanie spacji z ciągu znaków.

Ostatnio zmodyfikowano 2015-11-08 13:56
Autor Wiadomość
LordShadow47
Temat założony przez niniejszego użytkownika
Usuwanie spacji z ciągu znaków.
» 2015-11-07 14:31:33
Witam.

Zadanie brzmi: Napisz program wczytujący, z klawiatury ciąg znaków, a następnie przepisujący go z pominięciem spacji.
Nie proszę o rozwiązanie zadanie a jedynie o informację jakich bibliotek i jakich funkcji użyć. Program musi być napisany w zwykłym C.
Na razie napisałem program który wczytuje i wyświetla ciąg znaków ze spacjami:
#include<stdio.h>
int main()
{
    char x[200];
    int licznik=0;
    int i=0;
    int j=0;
    fgets(x,sizeof(x),stdin);
    printf("\n%s\n",x);
    return 0;
}
Ale nie wiem jak przepisać go z pominięciem spacji.
P-139757
Gibas11
» 2015-11-07 14:39:10
Wystarczy operator porównania i putchar(). Wyświetlaj ciąg znak po znaku z pominięciem spacji? Mniej-więcej tak:
C/C++
for( int i = 0; x[ i ] != '\0'; i++ )
{
    if( x[ i ] != ' ' )
    {
        putchar( x[ i ] );
    }
}
P-139758
LordShadow47
Temat założony przez niniejszego użytkownika
» 2015-11-07 16:14:01
Nie bardzo rozumiem zapis "x != '\0';
Spróbuję za pomocą podobnej pętli rozwiązać problem, ale mimo dobrego wyniku chodzi mi o przepisanie ciągu znaków do innego ciągu i dopiero wyświetlenie go już bez spacji.
P-139764
carlosmay
» 2015-11-07 16:20:00
x[ i ] != '\0'
 wykonuj pętlę póki nie osiągnie końca łańcucha.
P-139766
Gibas11
» 2015-11-07 16:21:25
x[ i ] != '\0'
 sprawdza czy obecnie sprawdzany znak nie ma kodu ASCII równego zeru - tak w C oznacza się koniec ciągu znaków.
EDIT: Heh, spóźniłem się 25 sekund. :/
P-139767
j23
» 2015-11-07 18:49:55
Tu masz wersję, która usuwa białe znaki w tablicy x:
C/C++
...

char * p1 = x;
char * p2 = x;

while( * p1 = * p2++ )
{
    if( !isspace( * p1 ) ) ++p1;
   
}

printf( "\n%s\n", x );
P-139778
LordShadow47
Temat założony przez niniejszego użytkownika
» 2015-11-08 12:48:23
Oki. Mam jeszcze jedno pytanie jak to jest w standardzie C. W jakich zmiennych przechowywane mogą być ciągi znaków? Wiem że da się to zrobić za pomocą zmiennej char użytej jako tablica. Ale co jeśli bym chciał wpisać nieograniczony ciąg znaków? Czy istnieje jakaś inna zmienna? Jak np. string w C++?
P-139806
j23
» 2015-11-08 13:56:05
Czegoś tak wygodnego jak string w C nie ma. Jedyne co Ci pozostaje to tablice dynamiczne tworzone na stercie funkcją malloc lub VLA.
P-139814
« 1 »
  Strona 1 z 1