[C] Operacje na tablicy znaków
Ostatnio zmodyfikowano 2013-12-06 17:56
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: #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: tab[ 0 ] = "lolek"; tab[ 1 ] = "bolek"; itp. |
|
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. |
|
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"; ?
|
|
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). |
|
marcopolo Temat założony przez niniejszego użytkownika |
» 2013-12-05 12:38:34 Nie skorzystam. Widzisz prefiks w tytule ? |
|
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.
|
|
pekfos |
» 2013-12-06 15:19:04 "a" nie jest typu char. |
|
marcopolo Temat założony przez niniejszego użytkownika |
» 2013-12-06 17:56:49 << removed >> |
|
« 1 » |