Pokaż wyniki 1 do 10 z 10

Temat: Ansi C - stringi

  1. #1
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie Ansi C - stringi

    Może wie ktoś, jak zainicjować string w ansi c.

    Chodzi mi o to, żeby program porównywał wpisany przez użytkownika ciąg wyrazów oraz mój mój ciąg.

    Czyli odpowiednik dla chara:
    char znak;
    ...
    if(znak='a')
    ...

    Próbowałem czegoś takiego, ale nie działa:
    string ciag;
    ...
    if(ciag=="abc")
    ...

    I potem drukowanie to chyba printf("%s\n",ciag); ?

  2. #2
    Zarejestrowany
    Dec 2008
    Postów
    91

    Domyślnie

    Kod:
    if(strcmp(ciag, "abc"))
    I chyba trzeba zaincludować string.h

  3. #3
    Avatar GSG-9
    GSG-9 jest offline Shapeshifter
    Zarejestrowany
    Jul 2007
    Skąd
    C:\Perl\bin
    Postów
    1,578

    Domyślnie

    mialem przekazac:
    man strcmp
    War, war never changes.

  4. #4
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie

    Ale w przyładowym programie:
    Kod:
    #include<stdio.h>
    #include<string.h>
    
    int main(void)
    {
            string ciag;
            int i;
            double t, a;
    
            scanf("%lf",&t);
            for(i=0;i<t;i++)
            {
                    scanf("%lf %s",&a,&ciag);
    
                    if(strcmp(ciag,"abc")==1)
                    printf("%.4lf\n",a*2);
                    else if(strcmp(ciag,"def")==1)
                    printf("%.4lf\n",a*3);
                    else
                    printf("%.4lf\n",0);
            }
            return 0;
    }
    Nie czyta mi stringa jako stringa. Czyli błąd:
    Kod:
    hackpl.c: In function 'main':
    hackpl.c:8: error: 'string' undeclared (first use in this function)
    hackpl.c:8: error: (Each undeclared identifier is reported only once
    hackpl.c:8: error: for each function it appears in.)
    hackpl.c:8: error: expected ';' before 'ciag'
    hackpl.c:15: error: 'ciag' undeclared (first use in this function)

  5. #5
    Zarejestrowany
    Dec 2008
    Postów
    48

    Domyślnie

    Użyj zamiast String ciąg tablicy Char[] *ciąg bo to nie c++.
    Ostatnio edytowane przez Paladyn : 04-21-2009 - 08:27

  6. #6
    Zarejestrowany
    Dec 2008
    Postów
    91

    Domyślnie

    Raczej
    Kod:
    char *ciag;

  7. #7
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie Dzięki!

    Wielkie dzięki. Kolejna umiejętność. Przyda się. Już 2 programy więcej.

  8. #8
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie

    A jak można by policzyć, ile znaków ma ten string?

    Jak podaję string:
    Kod:
    scanf("%s %s",tab1,tab2);
    ale nie wiem, jakiej długości on jest i chcę wiedzieć, ile znaków on ma.
    Jest na to jakaś funkcja? A jak nie, to jak to można zrobić?

  9. #9
    Zarejestrowany
    Dec 2006
    Postów
    726

    Domyślnie

    masz to zapisywane w tablicach czyli indeks ostatniej pozycji + 1 to bedzie długość, można tez to sprawdzić przy użyciu funkcji strlen.
    "dobrzy hakerzy są sławni na cały świat, ale o hakerach geniuszach nikt nic nie wie."

  10. #10
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie

    Dzięki.

    Olśniło mnie wczoraj po napisaniu postu i zrobiłem tak:
    Kod:
    for(i=0;i<1001;i++)
    {
                            if(tab1[i]!=0)x+=1;
    }
    gdzie 1001 to długość maksymalna stringu.

Podobne wątki

  1. stringi w klasach ;/
    By naichniach in forum C/C++
    Odpowiedzi: 4
    Autor: 02-25-2008, 14:38
  2. Stringi wektory i ciachanie
    By naichniach in forum C/C++
    Odpowiedzi: 10
    Autor: 12-05-2007, 21:41

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj