Dovrei aggiungere 1 alla mia dimensione di stringa sconosciuta quando creo un array di caratteri per tenerlo tramite malloc? [chiuso]

-1

Quando ho una stringa di dimensioni sconosciute e creo un array di caratteri per contenere questa stringa.

Faccio qualcosa del genere:

 #define LINE_END "\r\n"

int line_end_size = strlen(LINE_END);
char line[]="Hello! world.";
int line_size=strlen(line);
int test_line_size=line_size+line_end_size;
char *test_line = malloc(test_line_size);
strcpy(test_line,line);
strcat(test_line,LINE_END);

printf("test_line = ");
int index;
for (index = 0; index<test_line_size+1; index++) /* plus 1 to see the null */
    printf("%02X ", (unsigned char)test_line[index]);
printf("\n");

Dovrei aggiungere 1 alla dimensione di test_line_size per contenere il carattere NULL?

Questo deve essere compilato per linux32 , win32 , arm32 .

    
posta jc__ 15.04.2016 - 19:20
fonte

1 risposta

0

Se lo tratti come un array di caratteri, non hai bisogno di uno 0 alla fine. È solo un array come un altro.

Ma se vuoi usare funzioni di stringa su di esso (come strcpy , strcat nel tuo esempio), quelli cercheranno, rsp. aggiungi un terminatore null alla fine degli array, quindi avrai bisogno dello spazio riservato per questo!

Tieni presente che strcat scrive già questo 0 oltre la fine dello spazio malloc 'd.

Se hai usato le funzioni mem... (come @ commentato zan-lynx), e iterato l'array senza +1 , sarebbe perfetto (se insolito).

    
risposta data 15.04.2016 - 22:35
fonte

Leggi altre domande sui tag