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

[C] Operacje na tablicy znaków

Ostatnio zmodyfikowano 2013-12-06 17:56
Autor Wiadomość
marcopolo
Temat założony przez niniejszego użytkownika
[C] Operacje na tablicy znaków
» 2013-12-05 00:34:22
Witajcie,

czemu ten kod nie działa:

C/C++
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main() {
   
    char * tab[ 100 ];
   
   
    strcpy( tab[ 0 ], "pierwsze" );
    strcpy( tab[ 1 ], "drugie" );
    strcpy( tab[ 2 ], "trzecie" );
    strcpy( tab[ 4 ], "piate" );
   
    int i = 0;
   
    while( strcmp( tab[ i ], "" ) != 0 )
    {
        i++;
    }
    printf( "Pierwsze wolne pole w tablicy to tab[%d]\n", i );
    i = 0;
   
   
   
    int j = 0;
   
    while( strcmp( tab[ j ], "trzecie" ) != 0 ) {
        j++;
    }
    tab[ j ] = "";
    j = 0;
   
    printf( "wyczyscilem element\n" );
   
   
    while( strcmp( tab[ i ], "" ) != 0 )
    {
        i++;
    }
    printf( "Pierwsze wolne pole w tablicy to tab[%d]\n", i );
    i = 0;
}

Nie ma błędów, nie ma ostrzeżeń, a mimo wszystko segmentation fault 11..

Chciałem się pobawić tablicą znaków i wyszły takie problemy, z tablicą int nie ma takich cyrków.

A ja potrzebuję mieć tablicę z danymi napisami, w takiej postaci:

C/C++
tab[ 0 ] = "lolek";
tab[ 1 ] = "bolek";

itp.
P-98378
Monika90
» 2013-12-05 01:16:37
Pierwszy argument strcpy to ma być wskaźnik do tablicy znaków wystarczająco dużej by pomieścić kopiowany string. U ciebie jest to w ogóle niezainicjalizowany wskaźnik.

z tablicą int nie ma takich cyrków.
Tablica intów nie różni się niczym specjalnym od tablicy charów.
P-98382
marcopolo
Temat założony przez niniejszego użytkownika
» 2013-12-05 07:34:59
No widzisz, jednak czymś się musi różnić, bo analogicznie nie działa.

Dlaczego przy takiej tablicy trzeba komibnować ze strcpy zamiast normalnie sobie przypisać tab[0] = "ok"; ?

P-98390
Wiesiek
» 2013-12-05 11:41:58
Z tablicą int "cyrków" nie ma, ale z tablicą wskaźników do int będą. A Ty posługujesz się tablicą wskaźników do napisów. Doczytaj więc o inicjalizacji wskaźników, albo skorzystaj z tablicy zmiennych typu string (lekcja 23 kursu).
P-98393
marcopolo
Temat założony przez niniejszego użytkownika
» 2013-12-05 12:38:34
Nie skorzystam. Widzisz prefiks w tytule ?
P-98397
Szadziu
» 2013-12-06 14:04:18
Twoim problemem jest brak rozumienia działania tablicy.
Tablica intów w jednej komórce zawiera jednego inta, czyli np. tab[0] = 23; przechowuje ta wartość tab[1] = 35 druga i tak dalej.
Natomiast jedna komórka tablicy char, przechowuje jedna zmienna typu char.
Czyli:
tab[0] = "a";
tab[1] = "b";
itd.

P-98498
pekfos
» 2013-12-06 15:19:04
"a" nie jest typu char.
P-98502
marcopolo
Temat założony przez niniejszego użytkownika
» 2013-12-06 17:56:49
<< removed >>
P-98518
« 1 »
  Strona 1 z 1