gpt4 book ai didi

c - 将 main 拆分为一个函数

转载 作者:行者123 更新时间:2023-11-30 15:57:31 27 4
gpt4 key购买 nike

这是我的代码:

#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 (必须释放它并且需要打印输出)。
我必须创建一个结构并将其传递给函数的返回值吗?

最佳答案

您可以这样组织代码:

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

int read_input(char data[]);

int main()
{
char *data;
int i, conta;
data=malloc(sizeof(char));
printf("Write hostname: ");
conta = read_input(data);
/* 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;
}

int read_input(char data[])
{
char c, *temp;
int i, conta = 0;
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;
}
}
return conta;
}

关于c - 将 main 拆分为一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10451827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com