J'essaie de trouver l'emplacement d'un élément dans le tableau. J'ai essayé d'utiliser ce code i généréComment trouver un élément dans un tableau en C
for(i=0;i<10;i++)
{
if (strcmp(temp[0],varptr[i])==0) j=i;
}
VarPtr est un pointeur qui pointe vers tableau var [11] [10] et il est par la définition * VarPtr [11] [10]. J'ai assigné des chaînes à var [i] et je veux obtenir le numéro "i" de mon élément PAS L'ADRESSE.
Merci pour vos commentaires. EDit: temp est aussi un pointeur qui pointe vers la chaîne que je veux vérifier. Aussi j'utilise le tableau 2D pour garder les noms de variables et leur adresse. Donc oui je veux le garder dans un tableau 2D. La question est que ce code ne fonctionne pas du tout, il n'attribue pas i à j, alors je me demande où est le problème avec cette idée? écrire une "pause" ne change pas si le code fonctionne ou non, il optimise un peu le code.
complet Code:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
double atof(char*);
int main(void)
{
char in[100], *temp[10],var[11][10],*varptr[11][10];
int i,j, n = 0,fullval=0;
double val[11];
strcpy(var[11], "ans");
for(i=0;i<11;i++)
{
for(j=0;j<10;j++) varptr[i][j]=&var[i][j];
}
START:
printf("Enter the expression: ");
fflush(stdout);
for(i=0;i<10;i++) temp[i]=NULL;
if (fgets(in, sizeof in, stdin) != NULL)
{
temp[0] = strtok(in, " ");
if (temp[0] != NULL)
{
for (n = 1; n < 10 && (temp[n] = strtok(NULL," ")) != NULL; n++)
;
}
if (*temp[0]=="quit")
{
goto FINISH;}
if (isdigit(*temp[0]))
{
if (*temp[1]=='+') val[0] = atof(temp[0])+atof(temp[2]);
else if (*temp[1]=='-') val[0] = atof(temp[0])-atof(temp[2]);
else if (*temp[1]=='*') val[0] = atof(temp[0])*atof(temp[2]);
else if (*temp[1]=='/') val[0] = atof(temp[0])/atof(temp[2]);
printf("%s = %f\n",var[11],val[0]);
goto START;
}
else
if (temp[1]==NULL) //asking the value of a variable
{
for(i=0;i<10;i++)
{
if (strcmp(temp[0],varptr[i])==0) j=i;
}
printf("%s = %d\n",var[j],val[j]);
goto START;
}
if (*temp[1]==61)
{
strcpy(var[fullval], temp[0]);
if ((temp[3])!=NULL)
{
}
val[fullval]=atof(temp[2]);
printf("%s = %f\n",var[fullval],val[fullval]);
fullval++;
goto START;
}
if (*temp[1]!=61)
{
}
}
getch();
FINISH:
return 0;
}
Quelle est 'temp'? – pkh
Pas assez de code. Publiez plus, y compris les définitions de variables et les initialisations. – abelenky
Si vous avez trouvé l'index et l'avez stocké dans j, interrompez la boucle. Vous ne trouverez pas de meilleur résultat. – harper