发送一行二维数组作为参数
Sending a row of 2d array as arguement
1234 倍
1234567
12 将
我想要做的是将上面的二维数组的一行作为参数传递给 "strindex()",其中 returns "ould" 恰好位于的索引行,如果不是 returns -1 。然后将此索引值分配给数组 "q[]" 的元素。当所有行都完成后,然后打印所有行中最右边出现 "ould" 的 运行ce 的索引。
int strindex(char s[],char t[])
{ int i,j,k;
for(i=0;s[i]!='[=10=]';++i)
{ for(j=i,k=0;t[k]!='[=10=]'&&t[k]==s[j];k++,j++)
;
if(k>0 && t[k]=='[=10=]')
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]='[=10=]';
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][] 。
重要提示:***是程序的主要部分。
在main
的第一个循环中将line
复制到p[i]
时,j
未设置为零。在第一个循环开始之前它被设置为零一次,但随后第一个副本递增 j
,并且它保持在这个递增的值,因此当下一次尝试复制一行开始时它不是零。
此外,代码无法确保复制到 p[i]
中的每一行都以空字符结尾。
1234 倍
1234567
12 将
我想要做的是将上面的二维数组的一行作为参数传递给 "strindex()",其中 returns "ould" 恰好位于的索引行,如果不是 returns -1 。然后将此索引值分配给数组 "q[]" 的元素。当所有行都完成后,然后打印所有行中最右边出现 "ould" 的 运行ce 的索引。
int strindex(char s[],char t[])
{ int i,j,k;
for(i=0;s[i]!='[=10=]';++i)
{ for(j=i,k=0;t[k]!='[=10=]'&&t[k]==s[j];k++,j++)
;
if(k>0 && t[k]=='[=10=]')
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]='[=10=]';
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][] 。 重要提示:***是程序的主要部分。
在main
的第一个循环中将line
复制到p[i]
时,j
未设置为零。在第一个循环开始之前它被设置为零一次,但随后第一个副本递增 j
,并且它保持在这个递增的值,因此当下一次尝试复制一行开始时它不是零。
此外,代码无法确保复制到 p[i]
中的每一行都以空字符结尾。