Я пытаюсь найти расположение элемента в массиве.
Я пытался использовать этот код, который я сгенерировал
for(i=0;i<10;i++)
{
if (strcmp(temp[0],varptr[i])==0) j=i;
}
varptr - указатель, который указывает на массив var [11] [10], и это по определению * varptr [11] [10]. Я назначил строки для var [i], и я хочу получить номер "i" моего элемента, а НЕ АДРЕСА.
Спасибо за любой комментарий.
EDit: temp также указатель, который указывает на строку, которую я хочу проверить. Также я использую 2D-массив для хранения имен переменных и их адресов. Так что да, я хочу сохранить его внутри 2D-массива. Вопрос в том, что этот код вообще не работает, он не присваивает i для j, поэтому мне интересно, в чем проблема с этой идеей? написание «перерыва» не меняет, работает ли код или нет, просто немного оптимизирует код.
Полный код:
#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;
}