簡體   English   中英

如何將另一個 function 中的元素打印到主 function

[英]How to print elements from another function into main function

我不知道如何將 function 中的數組元素打印到主程序中,所以如果有人可以檢查此代碼並幫助我修復它,我將不勝感激。 該程序應該從用戶輸入中獲取數組的長度,然后詢問其元素並隨后將它們打印出來。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int arrayN(int N) {
    printf("Input array lenght: ");
    scanf("%d",&N);
    
    if(N>2) {
        return N;
    } else {
        return 0;
    }
}

int arrayelements(int array[], int array_length) {
    int loop, i, N;
    
    array_length = arrayN(N);
    
    printf("Enter elements of the array: \n");
    
    for(int i = 0; i < array_length; ++i) {
        scanf("%d", &array[i]);
    }
    
    for(loop = 0; loop < array_length; loop++) {
        printf("%d ", array[loop]);
    }
}

int main() {
    int N, array[], array_length;
    int b = arrayelements(array[], array_length);
    int a = arrayN(N);
    
    printf("Array length is: %d \n", a);
    printf("Elements of array are: %d \n", b);
    
    return 0;
}

我修改了您的示例代碼。 希望這是你想要的。

重點在於修復數組聲明問題、memory 分配和用戶輸入。

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <ctype.h>

int userinput_integer(const char *fmt, ...){
    int N, rv = 0;
    va_list va;
    
    va_start(va, fmt);
    vprintf(fmt, va);
    
    while(1){
        rv = scanf("%d", &N);
        if (1 == rv) break;
        
        printf("Input error! The input >>");
        do{
            rv = fgetc(stdin);
            if (isprint(rv)) putchar(rv);
        }while(rv != EOF && rv != '\n');
        
        printf("<< is not a valid integer.\nPlease try again: ");
    }
    
    va_end(va);
    return N;
}

int userinput_arraylength(void) {
    int N;
    
    N = userinput_integer("Input array lenght: ");
    
    if(N>2) {
        return N;
    } else {
        printf("Invalid length\n");
        
        return 0;
    }
}

int userinput_arrayelements(int *array, int N) {
    printf("Enter elements of the array: \n");
    
    for(int i = 0; i < N; ++i) {
        array[i] = userinput_integer("%d: ", i);
    }

    return N;
}

void print_arrayelements(int *array, int N){
    for(int i = 0; i < N; ++i) {
        printf("%d ", array[i]);
    }
}

int main() {
    int N, *array;
       
    N = userinput_arraylength();
    array = malloc(N * sizeof(*array));
    if (NULL == array){
        printf("Allocation error!\n");
        exit(-1);
    }

    N = userinput_arrayelements(array, N);
    
    printf("Array length is: %d \n", N);
    printf("Elements of array are:\n");
    print_arrayelements(array, N);
    
    free(array);
    
    return 0;
}

首先,數組的聲明不正確。 它應該是數組 [] = {0}

其次,你不能在arrayN function之前調用你的數組元素function,應該先輸入數組的大小

並且在數組元素()中不需要調用大小 function 可以在調用數組元素時直接傳遞數組的大小()

這是代碼:

#include <stdio.h>  
#include<malloc.h>  
int *getarray()  
{  
    int size;  
    printf("Enter the size of the array : ");  
    scanf("%d",&size);  
    int *p= malloc(sizeof(size));  
    printf("\nEnter the elements in an array");  
    for(int i=0;i<size;i++)  
    {  
        scanf("%d",&p[i]);  
    }  
    return p;  
}  
int main()  
{  
   int *ptr;  
   ptr=getarray();  
   int length=sizeof(*ptr);  
   printf("Elements that you have entered are : ");  
    for(int i=0;ptr[i]!='\0';i++)  
    {  
      printf("%d ", ptr[i]);  
    }  
  return 0;  
}  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM