如何解决我无法将一个函数的返回值传递给另一个函数,并且无法使用“声明的标识符”
我无法解决这个问题,我正在edX上进行CS50课程,并尝试解决第2周的任务,这是我第一次进行一些C编码。 我编写此脚本是为了返回用户在给定输入中的字母数,但似乎这些函数没有相互连接。
我在这里尝试做的事情是从getText
函数获取输入文本,并将返回值传递给validChars
函数,还有两个我还没有写的函数。然后从validChars
sentences
和wholeText
函数到主函数的返回值执行数学问题。
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
string getText(string text);
int validChars(int vch);
int main(void)
{
int mainchars = validChars(vc);
printf("Letras : %i",mainchars);
printf("\n");
}
string getText(string ctext)
{
string text = get_string("Text: ");
return text;
}
int validChars(int vch)
{
string text = getText(text);
int vc;
int n;
n = strlen(text);
for (int i = 0; i < n; i++)
{
if (text[i] >= 'a' && text[i] <= 'z')
{
vc++;
}
else if (text[i] >= 'A' && text[i] <= 'Z')
{
vc++;
}
}
return vc;
}
我收到错误:在第11行使用了未声明的标识符'vc'。我在今天的最后几个小时一直被困在这个问题上,试图自己解决这个问题,但是没有任何运气。
谢谢。
解决方法
调用vc
时将传递validChars
作为参数,但是您从未声明此变量,因此由于使用了未声明的变量而导致错误。该变量在validChars
函数中是局部变量,但这在main
中不可用。
不需要将其作为函数的参数,它从不使用该参数。该函数应使用text
作为参数,并且您应该在getText()
中调用main()
。
您不应该测试字符范围,请使用内置的isalpha()
函数。
您需要将vc
初始化为0
,然后才能将其用作计数器。
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
string getText(string text);
int validChars(void);
int main(void)
{
string text = getText(text);
int mainchars = validChars(vc);
printf("Letras : %i",mainchars);
printf("\n");
}
string getText(string ctext)
{
string text = get_string("Text: ");
return text;
}
int validChars(string text)
{
int vc = 0;
int n = strlen(text);
for (int i = 0; i < n; i++)
{
if (isalpha(text[i]))
{
vc++;
}
}
return vc;
}
,
- 您使用参数
vc
调用该函数。vc
未在main或全局范围内定义。 - 不需要参数
vch
,因为您没有将任何信息从被调用函数传递给函数。
修订代码:
int validChars(void);
int main(void)
{
int mainchars = validChars();
printf("Letras : %i",mainchars);
printf("\n");
}
string getText(string ctext)
{
string text = get_string("Text: ");
return text;
}
int validChars()
{
string text = getText(text);
int vc=0;
int n;
n = strlen(text);
for (int i = 0; i < n; i++)
{
if (text[i] >= 'a' && text[i] <= 'z')
{
vc++;
}
else if (text[i] >= 'A' && text[i] <= 'Z')
{
vc++;
}
}
return vc;
}
,
我无法轻松找到您的CS50问题集。
您收到的编译器错误是在尝试使用变量vc之前,它尚未声明(定义)变量vc。计算机开始执行main()中的代码行,但尚未告知vc表示什么值。
int main(void)
{
int mainchars = validChars(vc);
printf("Letras : %i",mainchars);
printf("\n");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。