esperti in c?

isee

Utente Attivo
847
3
CPU
AMD Athlon II X4 630
Scheda Madre
Gigabyte GA-MA785GMT-UD2H Rev 1.1
HDD
500 Gb Samsung
RAM
2 x 2 Gb Mushkin DDR3 1333
GPU
Sapphire ATI 5770 Vapor-X 1GB
Audio
onBoard
Monitor
Asus VH222D
PSU
OCZ StealthXStream2 500
Case
Cooler Master Elite
OS
Windows 7 + Slackware 13.1
ho 1 pogrammino ke nn funge:asd:. dv prendere in input 10 stringhe e memorizzarle in 1 array, poi ne prendo 1 altra e la confronto con quelle memorizzate x vedere se è uguale ad 1 di quelle appunto. ecco il cod:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>



int main(void)
{



char array[10][100];
char *stringa[10];
char a[100]; // mi serve per prendere in input la stringa da cercare

int k; // mi serve per inizializzare l'array di stringhe
for(k=0;k<10;k++)
stringa[k]='\0';


int i=0;
int pos=0;

char input[20];

printf("\nInserisci 10 stringhe, scrivi ESC per uscire: ");



while ( i<10 ){
gets(input);
printf("\n");
if(!strcmp(input,"ESC")) break;
strcpy(array,input);
i++;
}


printf("\nInserire una stringa : ");
scanf("%s", a);
stringa[5]=a;

pos=found(*array,10,stringa);

if(pos>=0)
printf("\nLa stringa è in posizione %d ",pos);
else printf("\nErrore,stringa non trovata");


system("PAUSE");
return 0;
}

int found ( char *arr,int num,char st){
int u;
for(u=0;u<num;u++)
if( strcmp(arr,st) && !strcmp(arr,"\0"))return u;

return -1;

}
 

bobo21

Utente Attivo
63
0
Guarda non sono molto esperto in c ma ho sempre saputo che una funzione va dichiarata sempre prima del main quindi found deve essere scritta prima del main poi non sono sicuro che tra le parentesi si deve scrivere (void), di solito si scrive (int argc, const char * argv[]) oppure niente...
 

airex

Utente Èlite
2,394
14
CPU
Intel Core2Duo E6750
Scheda Madre
Gigabyte GA-G33M-DS2R
HDD
1x80GB Sata2 + 1x320GB Sata2
RAM
2 x 2048MB DDR2 800MHz
GPU
NVidia 8800GT 1GB
Audio
Intel HDA
Monitor
LCD Samsung 19"
PSU
LC Power Green Power V2.0 - 550 Watt
OS
Linux Slackware64
ma di preciso che problemi ti da la compilazione o l'esecuzione?
 

dandan86

Nuovo Utente
5
0
hai mancato una malloc

Sembra tutto giusto tranne qui:

printf("\nInserire una stringa : ");
scanf("%s", a);
stringa[5]=a; //non hai allocato la memoria per la stringa a

L'array char *stringa[10] è un array di puntatori e non un array di array!
quindi quando assegni qualcosa ad uno dei suoi elementi devi fare spazio in memoria, tramite la malloc.Secondo me andrebbe fatto così:

printf("\nInserire una stringa : ");
scanf("%s", a);
int length=strlen(a); //misuri la lunghezza della stringa a
stringa[5]=(char *) malloc(length*sizeof(char)); //allochi lo spazio necessario
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili