Oppure

Loading
29/07/11 13:18
Nuko32
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 :D
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!!! :heehee:
aaa
29/07/11 13:25
giulioscatto
Ciao!
Cerca informazioni sulla funzione strcmp (si trova nell'header <string.h>;)
aaa
29/07/11 14:50
Pitagora
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
#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" );
		
	return 0;
}

Ho reso l'idea? :rotfl:

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 29/07/11 15:39
aaa
29/07/11 15:23
comina8
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:

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:

#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");
return 0;
}


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 29/07/11 15:25
aaa