这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
        char c, *data, *temp;
        data=malloc(sizeof(char));
        int i, conta=0;
        printf("Write hostname: ");
        for (i=0;;i++) {
            c=getchar();
            conta++;
            if (c=='\n') break; /* Se premo invio esco dal ciclo */
            data[i]=c; /* Inserisco il carattere nell'array */
            temp=realloc(data,(i+2)*sizeof(char)); /* do memoria aggiuntiva al puntatore (+2 per carattere NUL) */
            if ( temp != NULL ) {
                    data=temp; /* Se la riallocazione va a buon fine assegno temp a data */
            } else {
                    free(data); /* altrimenti libero il puntatore, stampo messaggio errore e chiudo programma */
                    printf("Error allocating memory!\n");
                    return EXIT_FAILURE;
            }    
        }
    /* Stampo la stringa letta, libero puntatore e chiudo programma */
    for (i=0;i<=conta;i++){
            printf("%c", data[i]);
        }
        printf("\n");
        free(data);
        return EXIT_SUCCESS;
}
我想将我的 main 拆分为一个可以获取用户输入(主机名、用户名)的函数。
我想要类似的东西:
#include <stdio.h>
#include <stdlib.h>
function read_input();
int main()
{
    printf("Write hostname: ");
    read_input();
    printf("Write username: ");
    read_input();
    for (i=0;i<=conta;i++){
      printf("%c", data[i]);
    }
    printf("\n");
    free(data);
    return EXIT_SUCCESS;
}
read_input(){
....
}
但我不知道我必须如何开始制作这个函数......
我不知道如何制作一个将返回conta(对于for cicle)的函数,指针data(必须被释放并且需要打印输出)。
我是否要创建一个结构并将其传递给函数的返回值?