我无法读取char数组
这是我将每个测试用例的字符串传递给我的数组的方法,并且工作正常,但传递数组是个问题。我在这里查了一下:
Passing arrays and matrices to functions as pointers and pointers to pointers in C
我仍然收到警告,我在指针和整数之间进行比较。
char klammern[MAX][STRING];
int i, test;
int ergebnis;
printf(" Test cases?:");
scanf("%d",&test);
getchar(); //catch Enter
for(i=0;i<test;i++)
{
fgets(klammern[i],30,stdin);
}
以下是我传递参数的方法:
for(i=0;i<test;i++)
{
ergebnis = matching_brackets( klammern );
printf("%d ",ergebnis);
}
我的函数应该计算括号的数量,如果不是所有括号都关闭则返回1,如果一切都正确,则返回0。
int matching_brackets(char (*klammern)[STRING])
{
int ergebnis, i;
int runde_klammern = 0;
for(i=0; *klammern[i] != '\n';i++)
{
if( *klammern[i] == '(')
{
runde_klammern++;
}
else if( *klammern[i] == ')')
{
runde_klammern--;
}
ergebnis = runde_klammern;
if ( ergebnis != 0)
{
return 1;
}
else
{
return 0 ;
}
测试时我看到函数中的for循环读取了我的数组:
数组[1] [0]
数组[2] [0]
...
我想循环数组,如:
阵列[0] [0]
阵列[0] [1]
...
编辑:我修复了函数中的拼写错误后,我不再收到编译器警告。
答案 0 :(得分:2)
你有两个问题,一个是你的循环错误而另一个是operator precedence问题。
你应该循环,例如。
for (size_t i = 0; i < test; ++i)
{
for (size_t j = 0; klamern[i][j] != '\n'; ++j)
{
// Here `klamern[i][j]` is the current character
}
}
请注意,您还需要将test
变量传递给函数。
上述循环也消除了第二个问题。 (编译器将*klamern[i]
视为*(klamern[i])
而不是(*klamern)[i]
)。