c - 如何添加 for 循环的计数器并将其传递给 C 中的函数

标签 c arrays pointers static

我对编程还比较陌生。我一直在开发一个项目,该项目将用户输入传递给一个函数,该函数查找数字的因子,将它们存储在一个数组中(最多仅适用于 100 个因子),然后将数组返回到主程序。一旦我将数组调用到主程序,然后使用 for 循环打印它,我就会遇到问题。我需要一个计数器来计算数组的大小,以计算出运行 for 循环的次数。

到目前为止,我尝试使用指针来计算第一个循环并将其发送到主函数,但没有成功。唯一有效的是全局变量,但出于显而易见的原因,我不想这样做。

#include <stdio.h>
#define MAX_SIZE 100

int* get_factors(int number)
{
int x;
int z;
int y = 0;
static int arr[MAX_SIZE];

for(x=1; x <= number; ++x)
    {
        if (number%x == 0)
        {
        arr[y] = x;
        y++;
        }
    }
return arr;
}

int main(void)
{
int *num;
int temp;
int z = 0;
    printf("Enter a number: ");
    scanf("%d",&temp);

    printf("Factors of %d: ", temp);

    num = get_factors(temp);

    for(z=0; z<=20; z++) //This is the loop that i need to figure out a 
    counter for
    {
    printf("%d ", num[z]);
}

return 0;
} 

最佳答案

#include <stdio.h>
#define MAX_SIZE 100
struct myObject {
int arr[MAX_SIZE];
int index;
};

struct myObject
get_factors (int number)
{
int x;
struct myObject holder;
holder.index = 0;
for (x = 1; x <= number; ++x)
{
  if (number % x == 0)
{
  holder.arr[holder.index] = x;
  holder.index++;
}
}
return holder;
}

int
main (void)
{
struct myObject num;
int temp;
int z;
printf ("Enter a number: ");
scanf ("%d", &temp);

printf ("Factors of %d: ", temp);

num = get_factors (temp);

for (z = 0; z < num.index; z++) //This is the loop that i need to figure out a 
//counter for
{
  printf ("%d ", num.arr[z]);
}

return 0;
}

关于c - 如何添加 for 循环的计数器并将其传递给 C 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57964866/

相关文章:

c - 在c中按字典顺序对字符串进行排序

java - 如何将 "add parsed string that used filter"转换为字符串 ArrayList

c++ - 如何将整数数组从 Tcl 传递到 C++?

c++ - 在 C++ 中什么时候使用 *、& 或 const 是正确的时机?

c - C 中的意外输出(树的遍历)

c - 获取当前控制台大小

c - 删除函数在 C 中不适用于特定文件但适用于其他文件

C++:int x[+30] 是有效的声明吗?

c - 跟踪函数调用

php - 如何使用 PHP 从数组创建子字符串?