Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao raga ho appena iniziato a programmare in C e mi trovo abbastanza bene. Ultimamente sto lavorando e studiano sulle variabili int ma volevo creare un piccolo programma che a seconda della STRINGA immessa dall'utenete venga visualizzato un determinato messaggio Esempio:
Se l'utente scrive "Ciao"
il programma risponde "Buongiorno"
con le integer si farebbe così
#include <stdio.h>
int messaggio;
scanf("%d" , &messaggio);
if(messaggio==4) {
printf("Hai scritto 4\n");
}
/*FINE PROGRAMMA*/
Non so se ho reso l'idea, ovviamente le frasi da dire sono già prestabilite!
AIUTO X FAVORE!!!
In C, come ha detto giustamente Pitagora, le stringhe non esistono, ma sono rappresentate da array di caratteri.
Un array (anche se penso lo saprai) è una sequenza di celle di memoria dello stesso tipo:
Es. int a; corrisponde a "creare" una variabile chiamata a
int a[10] corrisponde a "creare" 10 variabili intere ognuna riconoscibile
dal nome della variabile (a) e il suo indice: a[0] è il primo elemento
a[9] l'ultimo.
Quindi per "creare" una stringa bisogna dichiarare:
char Stringa[100];
Per prendere in input una stringa si usa la scanf (come per i numeri)
passando come formato %s:
scanf("%s",Stringa); //senza l'&!!
Per stampare una stringa printf("%s",Stringa);
Quindi un codice del genere:
Codice sorgente - presumibilmente C/C++
char Stringa[100];
printf("Inserisci la stringa: ");
scanf("%s",Stringa);
printf("La stringa che hai inserito: %s",Stringa);
Riceve in input una stringa e la stampa.
Per confrontare due stringhe si usa la funzione strcmp (string.h)
if(strcmp(Stringa1,Stringa2)==0) significa "se le due stringhe sono uguali"
Quindi un codice del genere:
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char Str[100];
printf("Inserisci la stringa: ");
scanf("%s",Str);
if(strcmp(Str,"Ciao")==0)
printf("Buongiorno");
else
printf("Comando sconosciuto");
return0;
}
Stampa "Buongiorno" se la stringa ricevuta in input è uguale a "Ciao".
Da notare che strcmp (come tante altre funzioni) prende come parametro una stringa o "creata" da te o immessa direttamente mediante l'uso delle "".
Ultima modifica effettuata da comina8 il 29/07/2011 alle 17:25
ho appena iniziato a programmare in C e mi trovo abbastanza bene.
Questa illusione sparirà, credimi!
Le stringhe in C non esistono. Meglio, non c'è un tipo di dato specifico, come negli altri linguaggi!
Sei ancora lontano per poter usare le "stringhe" (notare virgolette) in C. Approfondisci i tuoi studi sulla iterazione, selezione, array, puntatore e poi le BRUTTE "stringhe" in C.
P.S. quel tuo, semplice, programma è solo l'inizio. Vai avanti, ma non correre troppo!
Guarda quanto è brutto il C
Codice sorgente - presumibilmente C++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char*stringa =calloc( 30, sizeof(char));
if( stringa ==NULL)
{
fprintf(stderr, "Errore allocazione dinamica\n");
exit( 1 );
}
fprintf(stdout, "> ");
fscanf(stdin, "%s", stringa );
if(strcmp( stringa, "ciao")== 0 )
fprintf(stdout, "Buongiorno :)\n");
else
fprintf(stdout, "Comando sconosciuto\n");
return0;
}
Ho reso l'idea?
STUDIA!
Non è mia intenzione scoraggiarti. Ricorda che solo il C, ti da la giusta base, per la programmazione. Perchè? Perchè è compito del programmatore gestire, TUTTO ( a volte porta effetti negativi )! In altri linguaggi non è così. Presto lo capirai... Ogni programmatore deve conoscere il C!
Ultima modifica effettuata da Pitagora il 29/07/2011 alle 17:39
Penso sia inutile sbattergli i puntatori in faccia senza neanche una spiegazione dicendogli solamente che il C è "brutto" e che deve studiare...-.-" - comina8 - 29/07/11 17:28
Penso sia inutile rispondere a questo topic dandogli dei chiarimenti riguardo ad array, quando ancora deve studiare funzioni, cicli interattivi. Attenzione Attenzione, ho scritto che è brutto, ma ho scritto A FINE POST che è un linguaggio indispensabile. Il che è un valido motivo per poter - Pitagora - 29/07/11 17:35
... proseguire lo studio. Inoltre nel mio post ci sono dei flash che toccano l'argomento: "bruttezza". Vedi: "Non c'è un tipo di dato che permetta di usare le stringhe", "compito del programmatore gestire tutto" - Pitagora - 29/07/11 17:39
E' meglio che sia il programmatore a gestire tutto...E poi anche avessi un tipo di dato String cambierebbe così tanto per l'esercizio da lui proposto? - comina8 - 29/07/11 20:20
L'allocazione dinamica non è necessaria in questo esercizio... complicazioni extra. Inoltre non trovo che il C sia definibile "brutto". - pierotofy - 30/07/11 01:53
oh ma dai ragazzi, il C è così limitato... Non può essere paragonato a MOLTI ALTRI linguaggi. - Pitagora - 30/07/11 11:27
@comina8 io non ho detto ciò che hai scritto tu, nella prima frase. Ho semplicemente affermato che, "la gestione tocca al programmatore... ( A VOLTE porta effetti negativi) " - Pitagora - 30/07/11 11:31
Il C è limitato per chi è limitato...E comunque tu hai detto che non c'è un tipo di dato per le stringhe e io ti ho chiesto, che cosa cambierebbe? (è una domanda non un'affermazione-domanda) - comina8 - 30/07/11 12:15
non incominciamo a scrivere frasi con doppi sensi che contengono insulti, stiamo SEMPLICEMENTE, esprimendo la nostra opinione. Un esempio, semplifica le cose: e meglio avere un televisore 21" o un televisore 50" full HD, 3D. quale pensi che sia meglio? - Pitagora - 30/07/11 15:48
Non c'era nessun doppio senso, era tutto molto esplicito, il C non va bene per chi non lo sa gestire. Se a te non piace non vuol dire che non lo sai gestire. In ogni caso non hai risposto alla mia domanda. - comina8 - 30/07/11 16:00
non parlo con le persone arroganti. Chiudo qui. - Pitagora - 30/07/11 17:41
Hai esaurito gli specchi? Chiudo anch'io. - comina8 - 30/07/11 18:02