Отправка строки 2d массива в качестве аргумента - PullRequest
0 голосов
/ 28 октября 2018

1234ould
1234567ould
12ould

То, что я хочу сделать, это взять строку из указанного выше двумерного массива и передать ее в качестве аргумента функции "strindex ()", которая возвращает индекс, где "случается "в строке, и если нет, то возвращает -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 Ответ

0 голосов
/ 28 октября 2018

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

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

...