如何从同一个函数输出两个值
How to output two values from the same function
基本上就是标题所说的。我有这个程序:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int letter_countf(string Text1);
int main(void)
{
string TextIn = get_string("Text: ");
int letter_count = letter_countf(TextIn);
printf("%i\n", letter_count);
}
int letter_countf(string Text)
{
int Is_letter = 0; int Is_space = 0;
for(int i = 0; i < strlen(Text); i++)
{
if (isspace(Text[i]) != 0)
{
Is_space++;
}
else
{
Is_letter++;
}
}
}
我希望函数 letter_countf 的输出同时是 Is_space 和 Is_letter 变量。
如何存储这两个值?
有不同的方法。例如,您可以声明一个结构和 return 这个结构的对象,例如
struct Items
{
int letter;
int space;
};
struct Items letter_countf(string Text)
{
struct Items items = { .letter = 0, .space = 0 };
for(int i = 0; i < strlen(Text); i++)
{
if (isspace(Text[i]) != 0)
{
items.space++;
}
else
{
items.letter++;
}
}
return items;
}
另一种方法是在main中声明变量letter_count和space_count并通过引用将它们传递给函数
void letter_countf(string Text, int *letter_count, int *space_count );
//...
int letter_count = 0, space_count = 0;
letter_countf( TextIn, &letter_count, &space_count );
基本上就是标题所说的。我有这个程序:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int letter_countf(string Text1);
int main(void)
{
string TextIn = get_string("Text: ");
int letter_count = letter_countf(TextIn);
printf("%i\n", letter_count);
}
int letter_countf(string Text)
{
int Is_letter = 0; int Is_space = 0;
for(int i = 0; i < strlen(Text); i++)
{
if (isspace(Text[i]) != 0)
{
Is_space++;
}
else
{
Is_letter++;
}
}
}
我希望函数 letter_countf 的输出同时是 Is_space 和 Is_letter 变量。 如何存储这两个值?
有不同的方法。例如,您可以声明一个结构和 return 这个结构的对象,例如
struct Items
{
int letter;
int space;
};
struct Items letter_countf(string Text)
{
struct Items items = { .letter = 0, .space = 0 };
for(int i = 0; i < strlen(Text); i++)
{
if (isspace(Text[i]) != 0)
{
items.space++;
}
else
{
items.letter++;
}
}
return items;
}
另一种方法是在main中声明变量letter_count和space_count并通过引用将它们传递给函数
void letter_countf(string Text, int *letter_count, int *space_count );
//...
int letter_count = 0, space_count = 0;
letter_countf( TextIn, &letter_count, &space_count );