gpt4 book ai didi

比较通过字符指针传递给函数的字符串

转载 作者:行者123 更新时间:2023-11-30 15:21:11 32 4
gpt4 key购买 nike

我需要帮助来使用指针比较函数上的两个字符串,我知道如何在不使用指针的情况下执行此操作。

这是代码:

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

}

最佳答案

那么,有几个问题:

首先,您将 palabra 声明为 指向 char 的指针数组,根据代码,这不是您想要的:

  scanf("%s",palabra);

如果您希望 palabra 存储 9 个或更少字符的单个字符串,只需将其声明为

char palabra[10];

这意味着您还需要更改 compare 函数的声明和定义,如下所示:

void compare( char *ptr, char *palabra )

接下来,将 compare 函数中的 strcmp 调用更改为

if( strcmp( ptr, palabra ) ==0 ){

表达式 (*ptr)[1] 尝试取消引用 ptr,然后将下标应用于结果,但这是不会在这种情况下工作。 *ptr 的结果是 ptr 指向的字符串中第一个字符的值(difone 中的字符串之一, >diftwodif Three 数组)。单个字符不是数组或指针表达式,因此您无法对其应用 [] 运算符。

除非它是 sizeof 或一元 & 运算符的操作数,否则像 palabra 这样的数组表达式将被转换(“decay” ) 为指针表达式,指针的值将是数组第一个元素的地址。我们在 main 中将 palabra 声明为一个 10 元素的 char 数组,但是当我们将其作为参数传递给 scanfcompare,该数组表达式会转换为指针表达式,这就是为什么我们在 compare 的定义中将其声明为 char *palabra >。

关于比较通过字符指针传递给函数的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29630246/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com