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]. ВАЖНО: *** - это основная часть программы.
Добавлен минимально полный проверяемый пример. Спасибо @Eric Postpischil
Это не полный и не поддающийся проверке пример. pattern не определяется. MAXLIM не определяется. <stdio.h> и <stdlib.h> не включены. Два экземпляра *** мешают компиляции. Код должен быть компилируемым: когда кто-то копирует ваш код, вставляет его в файл и компилирует, он должен компилироваться без каких-либо изменений.





При копировании line в p[i] в первом цикле в main, j не устанавливается в ноль. Он сбрасывается в ноль один раз перед началом первого цикла, но затем первая копия увеличивает j и остается на этом увеличенном значении, поэтому оно не равно нулю, когда начинается следующая попытка копирования строки.
Кроме того, код не может гарантировать, что каждая строка, скопированная в p[i], заканчивается нулевым символом.
Спасибо, @Eric Postpischil, и извиняюсь за неудобства, вызванные неправильным кодом ?
Вы должны предоставить Минимальный полный проверяемый пример.