我需要帮助来比较使用指针的函数上的两个字符串,我知道如何在不使用指针的情况下做到这一点。比较通过字符指针传递给函数的字符串
下面是代码:
#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