Отправка строки 2d массива в качестве аргумента

1234ould
1234567ould
12ould

То, что я хочу сделать, это взять строку вышеупомянутого 2D-массива и передать ее в качестве аргумента функции strindex (), которая возвращает индекс, где «ould» находится в строке, и если нет, возвращает -1. Затем это значение индекса присваивается элементу массива «q []». Когда все строки завершены, тогда печатается индекс самого правого вхождения «ould» из всех строк.

int strindex(char s[],char t[])
{   int i,j,k;
for(i=0;s[i]!='\0';++i)
{   for(j=i,k=0;t[k]!='\0'&&t[k]==s[j];k++,j++)
;
if(k>0 && t[k]=='\0')
return i;
}
return -1;
}

int getline(char s[],int lim)
{   int i,c;
i=0;
while((--lim)>0 && (c=getchar())!=EOF && c!='\n')
s[i++]=c;
if(c=='\n')
s[i++]='\n';
s[i]='\0';
return i;
}

void main(void)
{   char line[MAXLIM],p[10][MAXLIM];
int i=0,j=0,k=0,q[10],max;
while((getline(line,MAXLIM))>0)
{   for(;j<strlen(line);j++)
{   p[i][j] = line[j];
}
i++;
}
***max=0;
for(;k<i;++k)
{
q[k]=strindex(p[k],pattern);

if(q[k]>max)
{
max=q[k];
}***
}getch();
clrscr();

}

Но когда я отлаживал программу, она работала правильно для первой строки, присваивающей max = 4, но после того, как я увидел значение q [k], ей было присвоено -1 для обеих строк и, следовательно, испортил мою программу.
ВАЖНО: первый параметр strindex () принимает одномерный массив, поэтому вместо p [k] [] я написал p [k].
ВАЖНО: *** является основной частью программы.

-1

Решение

При копировании line в p[i] в первом цикле main, j не установлен на ноль. Он устанавливается в ноль один раз до начала первого цикла, но затем увеличивается первая копия jи он остается на этом увеличенном значении, поэтому он не равен нулю, когда начинается следующая попытка скопировать строку.

Кроме того, код не может гарантировать, что каждая строка копируется в p[i] заканчивается нулевым символом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]