我需要幫助來比較使用指針的函數上的兩個字符串,我知道如何在不使用指針的情況下做到這一點。比較通過字符指針傳遞給函數的字符串
下面是代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
char *randString(int dif);
void compare(char *ptr, char *palabra[10]);
int main(){
srand(time(NULL));
int contador = 0;
int dif;
char *palabra[10];
/*while ( contador < 100){
char* ptr = randString();
printf ("%s\n", ptr);
contador++;
}*/
printf("Dificultad: ");
scanf("%i",&dif);
char *ptr=randString(dif);
printf("Palabra seleccionada: %s\n",ptr);
printf("Introduce palabra para comparar: ");
scanf("%s",palabra);
compare(ptr, palabra);
getchar();
return 0;
}
static char difone[5][100] ={
{"Duck"},
{"Taxi"},
{"Hola Mundo!"},
{"Paris"},
{"Lexugon"}
};
static char diftwo[5][100] ={
{"colan"},
{"cocuy"},
{"cojee"},
{"clona"},
{"cobra"}
};
static char difthree[5][100] ={
{"cogen"},
{"codee"},
{"cocio"},
{"cogio"},
{"coces"}
};
char *randString(int dif) {
if(dif==1){
return difone[rand() % (4 - 0)] ;
}else{
if(dif==2){
return diftwo[rand() % (4 - 0)] ;
}else{
if(dif==3){
return difthree[rand() % (4 - 0)] ;
}
}
}
}
,這是比較功能:
void compare(char* ptr, char *palabra[10]){
printf("Palabra seleccionada: %s\n",ptr);
printf("Palabra introducida: %s",palabra);
if(strcmp((*ptr)[1],(*palabra)[1]==0){
printf("Igual");
}else{
printf("No igual");
}
}
1)'scanf(「%s」,palabra);'是錯誤的。因爲'palabra'是'char **',而'%s'需要'char *'。 2)如果dif不是1,2或3,你的'randString()'函數不會返回任何東西。3)所有'rand()%(4-0)'應該是'rand()%5'。 4)'void compare(char * ptr,char * palabra [10])'應該是'void compare(char * ptr,char ** palabra)'5)if(strcmp((* ptr)[1],( * palabra)[1] == 0)'沒有任何意義並且是錯誤的 –
請參閱('-Wall -Wextra -pedantic' for gcc),閱讀並認真閱讀編譯器的警告。你的代碼工作得更好的機會更高 – alk
我很抱歉這段代碼,但只是我想快速恢復這是這麼多警告的原因......感謝這個我現在得到了問題是解決它是指針.... – causeofhell