grazie adesso comincio a capire un po' di più ...
comunque il mio problema era un altro
devo inserire una stringa di duo o tre o quattro parole ...
e ogni parola metterla in un array di stringhe
CIAO a tutti
grazie adesso comincio a capire un po' di più ...
comunque il mio problema era un altro
devo inserire una stringa di duo o tre o quattro parole ...
e ogni parola metterla in un array di stringhe
CIAO a tutti
CHIARIMENTO
char s[100];
è un unica stringa dalla lunghezza massima di 100 caratteri
oppure è un array di 100 stringhe diverse?
Mi sono incasinato ancorà di più
BAH
AIUTATEMI
GRAZIE ANCORA E CIAO
se scrivi
char s[100];
dichiari un vettore di caratteri che contiene una stringa. Per quanto ne so, credo cmq che sia così, la stringa è una sola, composta ( in questo caso ) da max 99 caratteri + il carattere nullo '\0'.
è importante notare che ogni stringa deve poter contenere i caratteri inseriti più il carattere '\0' che serve ad indicare la fine della stringa.
se scrivo:
char stringa[ ] = "ciao";
in realtà il vettore contiene 5 elementi:
stringa[ 0 ] = c
stringa[ 1 ] = i
stringa[ 2 ] = a
stringa[ 3 ] = o
stringa[ 4 ] = \0
credo sia così... non dovrei sbagliarmi...
http://www.mangaitalia.net/
questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo
Un Array di Stringhe e' una matrice di Caratteri...
codice:// 10 Stringhe di Massimo 29 Caratteri... char arrayStr[10][29+1]; // 1 e' il '\0' // Inserimento Stringhe nell'Array for (i=0; i < 10; i++) { printf ("Str %d : ", i+1); gets(arrayStr[i]); } // Stampa Stringhe for (i=0; i < 10; i++) { printf ("%d. %s : ", i+1, arrayStr[i]); }
PoWered by:
Gentoo 1.5.3 - Kernel 2.6.7
Debian Sid - Kernel 2.6.7 - Bash 3.0
Slackware current - Kernel 2.6.7
grazie molto utile e chiaro
un'altra domandina
char t;
e
char t[100];
che differenza c'è?
il primo è una stringa infinta? mi sembra strano è un errore?
il primo :
char t;
non e' una stringa... e' un carattere...
scanf("%c", &t);
pero' se usi gets(t);
non dovrebbe darti errore ma va' a scrivere in area di memoria che non ti appartengono...In Poche Parole... e' un errore pericoloso...
PoWered by:
Gentoo 1.5.3 - Kernel 2.6.7
Debian Sid - Kernel 2.6.7 - Bash 3.0
Slackware current - Kernel 2.6.7
il secondo...(mi ero gia' dimenticato)
e' una stringa/array di caratteri...
char b[10];codice:char a; // Singolo Carattere char b[10]; // Array di Caratteri (Stringa)
e' una stringa che puo' contenere 9 caratteri...
il 10 serve per il terminatore '\0'
es. Stringa 4 Caratteri
char b[10];
gets(b);
Inserendo 'ciao' si ottiene questo :
Al Contrario di quello che si puo' pensare '\0' e' un singolo carattere... come '\n' '\t' ecc.codice:b[0] = 'c' b[1] = 'i' b[2] = 'a' b[3] = 'o' b[4] = '\0'
PoWered by:
Gentoo 1.5.3 - Kernel 2.6.7
Debian Sid - Kernel 2.6.7 - Bash 3.0
Slackware current - Kernel 2.6.7
ovvio
certe volte mi perdo in un bicchiere d'acqua
CIAO A TUTTI
E ANCORA GRAZIE
Comunque, gets() non mi sembra la scelta migliore per prendere una stringa con spazivedi sscanf() o fgets()
Powered by Linux
"Windows cerca di fare Unix e ci riesce male, Red Hat cerca di fare Windows e ci riesce benissimo" (Jimmy Olgeni)
Per il tuo problema (se l'ho capito bene) puoi farlo così:
in pratica stampa e mette in un vettore la parola, Se 'n' e uguale a 1 mette la parola nel vettore par1 e cosi via fino alla fine della stringa 'str'.codice:.... char str[100]; char par1[15],par2[15],par3[15],par4[15]; /* 'parn' dove n e il numero di parole che si vuole memorizare */ int n=1,i,c; printf("Inserisci la stringa: "); gets(str); for(i=0,c=0;str[i]!='\0';i++,c++) { if(str[i]!=' ') { switch(n){ case 1: par1[c]=str[i]; break; case 2: par2[c]=str[i]; break; case 3: par3[c]=str[i]; break; case 4: par4[c]=str[i]; break; default: printf("Frase lunga"); break; } printf("%c",str[i]); } else { n++; c=-1; printf("\n"); } }
Io lo vedo risolvibile cosi magari c'e un modo più semplice...
Il linguaggio migliore e quello che ti crei da solo...