如何从同一个函数输出两个值

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 );