0
這是我的代碼:分拆的主成一個功能
#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;
}
我想我的主要分成功能,將讓用戶輸入(主機名,用戶名)。
我想是這樣的:
#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
(必須釋放它並且需要打印輸出)。
我有做一個結構,並將其傳遞給函數的返回?
這是不對的。如果realloc()返回一個不同於指定的指針(指向數據),則新指針將不會被main()所看到,該指針仍然保存舊副本。 – wildplasser