您好我在编译时遇到了一个小问题。
所以我的程序中的问题是:
Ny code -
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void brackets(char str[], int len);
int main()
{
char str[99];
int len;
printf("enter Mathematical exercise: \n");
gets(str);
len = srtlen(str);
brackets(str1);
return(0);
}
void brackets(str,len)
{
char str1[99];
int i,j = 0;
for(i = 0; i < len; i++)
{
if (str[i] == '(')
{
i++;
while(str[i] != ')')
{
str1[j] = str[i];
i++;
j++;
}
}
}
printf("%s\n",str1);
}
我很想知道这些错误是什么产生的,我怎样才能安排这个程序。感谢
答案 0 :(得分:2)
更改
void brackets(str,len)
到
void brackets(char str[], int len)
,您的函数调用应为brackets(str, len);
。并且还要改变
len = srtlen(str); // Spelling mistake.
到
len = strlen(str);
答案 1 :(得分:1)
你的功能括号需要两个参数,所以你需要给他两个:
括号(STR1);
必须成为
括号(str1,len);
答案 2 :(得分:0)
您将括号函数定义为接受2个参数但只传递一个。通过第二个。
答案 3 :(得分:0)
对于第二个错误,如果没有为函数参数提供类型,编译器将假定它的类型为int
。由于第一个参数已被声明为类型char []
,因此声明(原型)与函数定义之间存在不匹配。
对于第一个错误,当您声明一个函数来获取N个参数时,需要使用N个参数调用它。函数的例外是声明采用variable number of arguments。
答案 4 :(得分:0)
这是您的问题:brackets(str1);
您只使用一个参数调用brackets
,但您将其定义为:
void brackets(char str[], int len);
您需要传递一个int作为第二个参数。
答案 5 :(得分:0)
您的代码中出现多个错误
从main
你没有在main中声明str1
,而是在brackets(str1);
中使用它。我认为你的意思是str
,因为你声明了char str[99];
所以按brackets(str);
同样void brackets(str[], len)
函数未指定函数参数的数据类型请将其更改为void brackets(char str[], int len)
同样在主len = srtlen(str);
中,srtlen
无效,但请len = strlen(str);
最后你打电话给brackets(str1);
,但brackets
期待两个参数,所以请在brackets(str,len);
经过上述更改后,您的代码现在已清除,没有错误,如下所示
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void brackets(char str[], int len);
int main()
{
char str[99];
int len;
printf("enter Mathematical exercise: \n");
gets(str);
len = strlen(str);
brackets(str,len);
return(0);
}
void brackets(char str[],int len)
{
char str1[99];
int i,j = 0;
for(i = 0; i < len; i++)
{
if (str[i] == '(')
{
i++;
while(str[i] != ')')
{
str1[j] = str[i];
i++;
j++;
}
}
}
printf("%s\n",str1);
}