
arreglo dinamico de char *
Publicado por Diego (150 intervenciones) el 01/10/2016 04:23:59
Buenas noches traté de adaptar el código que tenía para un arreglo dinámico de uint64_t
Quise hacer que funcionara para hacer un arreglo dinámico de cadenas de caracteres, pero no funcionó mi adaptación.
Arreglo de uint64_t:
Intento de arreglo de char *:
Quise hacer que funcionara para hacer un arreglo dinámico de cadenas de caracteres, pero no funcionó mi adaptación.
Arreglo de uint64_t:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <endian.h>
#include <inttypes.h>
void add_number(uint64_t **array, uint64_t number, uint64_t size);
int main(int argc, char *argv[]){
uint64_t num;
uint64_t *array = NULL;
uint64_t i;
for (i = 0; i<4; i++){
scanf("%" SCNu64, &num);
add_number(&array, num, i);
}
for (i = 0; i<4 ; i++){
printf("num = %" PRId64 "\n", *(array + i));
}
return EXIT_SUCCESS;
}
void add_number(uint64_t **array, uint64_t num, uint64_t size) {
*array = (uint64_t *)realloc(*array, (size + 1) * sizeof(uint64_t));
(*array)[size] = num;
// printf("num = %" PRId64 "\n", (*array)[size]);
}
Intento de arreglo de char *:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <endian.h>
#include <inttypes.h>
void add_line(char ***array, char *line, uint64_t size);
int main(int argc, char *argv[]){
char *line1, *line2, *line3 = NULL;
char **array = NULL;
uint64_t i;
// array = (uint64_t *)malloc(sizeof(uint64_t) * 1);
line1 = (char *) malloc(sizeof(char) * 2);
*(line1 + 1) = '\0';
strcpy(line1, "A");
line2 = (char *) malloc(sizeof(char) * 2);
*(line2 + 1) = '\0';
strcpy(line2, "B");
line3 = (char *) malloc(sizeof(char) * 2);
*(line3 + 1) = '\0';
strcpy(line3, "C");
add_line(&array, line1, i);
add_line(&array, line2, i);
add_line(&array, line3, i);
}
/* for (i = 0; i<4 ; i++){
printf("num = %" PRId64 "\n", *(array + i));
}*/
free(array);
return EXIT_SUCCESS;
}
void add_line(char ***array, char *line, uint64_t size) {
*array = (char *)realloc(*array, (size + 1) * sizeof(char));
(*array)[size] = line;
// printf("num = %" PRId64 "\n", (*array)[size]);
}
Valora esta pregunta


0