View Full Version : C: scrittura e stampa stringa (gestirla anche come vettore)
angelica
16-11-2003, 21:48
altri problemucci! :D
il codice è semplicissimo:
#include <stdio.h>
#define LUN 255
main()
{
char *p, testo[LUN];
printf("Immetti una linea di testo : ");
gets(testo);
for (p=testo; *p; p++) putchar(*p);
}
gets mi stampa il testo in output.
La domanda è: come faccio a inserire il testo in una stringa e poi gestirla come un vettore, senza inserire un carattere alla volta?
Se ad esempio scrivo
{
char testo[100];
int i,j;
printf("Immetti una stringa di testo: \n");
for(i = 0; (testo[i]=getchar()) != '\n'; i++); /* sostituisce gets(testo) */
puts(testo);
for (j = 0; j < i; j++)
printf("%s",testo[j]);
}
noto che il primo puts(testo) mi stampa la stringa, ma il ciclo seguente non lo fa...come mai? qualcosa che non va nel printf?
Premetto che sono anch'io alle prime armi...
O stampi tutti i caratteri della stringa singolarmente:
{
char testo[100];
int i,j;
printf("Immetti una stringa di testo: \n");
for(i = 0; (testo[i]=getchar()) != '\n'; i++); /* sostituisce gets(testo) */
puts(testo);
for (j = 0; j < i; j++)
printf("%c",testo[j]);
}
Oppure stampi direttamente la stringa senza bisogno del ciclo:
{
char testo[100];
int i,j;
printf("Immetti una stringa di testo: \n");
for(i = 0; (testo[i]=getchar()) != '\n'; i++); /* sostituisce gets(testo) */
puts(testo);
printf("%s",testo);
}
angelica
16-11-2003, 23:32
Originariamente inviato da Berno
printf("%c",testo[j]);
Sarai anche alle prime armi...ma quel cavolo di c a me proprio sfuggiva!
a me il ciclo serviva per poter stampare, per esempio, testo[3] da solo!
grazissime!! ;)
Sephiroth83
18-11-2003, 02:27
Originariamente inviato da angelica
altri problemucci! :D
il codice è semplicissimo:
#include <stdio.h>
#define LUN 255
main()
{
char *p, testo[LUN];
printf("Immetti una linea di testo : ");
gets(testo);
for (p=testo; *p; p++) putchar(*p);
}
gets mi stampa il testo in output.
La domanda è: come faccio a inserire il testo in una stringa e poi gestirla come un vettore, senza inserire un carattere alla volta?
Se ad esempio scrivo
{
char testo[100];
int i,j;
printf("Immetti una stringa di testo: \n");
for(i = 0; (testo[i]=getchar()) != '\n'; i++); /* sostituisce gets(testo) */
puts(testo);
for (j = 0; j < i; j++)
printf("%s",testo[j]);
}
noto che il primo puts(testo) mi stampa la stringa, ma il ciclo seguente non lo fa...come mai? qualcosa che non va nel printf?
Secondo me vi state complicando la vita.
for (j = 0; j < i; j++)
printf("%s",testo[j]);
questo codice non funziona perché tu metti come formato una stringa mentre il secondo argomento della printf (testo[j]) è un carattere. Quando passi il nome di una stringa, in realtà il c passa un puntatore all'inizio della stringa (che non è altro che una serie di caratteri consecutivi in memoria terminati da un '\0') e il c stampa finché non incontra il terminatore. L'argomento dei puntatori all'inizio è un po' complicato ma di vitale importanza nel C.
Comunque per stampare puoi fare fondamentalmente in due modi:
printf("%s", testo);
oppure
for (j = 0; testo[j] != '\0'; j++)
putchar(testo[j]);
Il primo è preferibile perché fai gestire al compilatore l'output senza complicarti la vita con cicli inutili.
angelica
18-11-2003, 14:54
grazie per l'intervento, Sephiroth83 :)
comunque non era un vero problema, quello da me postato...semplicemente volevo fare un po' di prove sull'I/O! ;)
X Sepiroth83
Hai detto le stesse core che ho detto io :D ...
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.