Hello can you tell me why is the compiler building sucessfully when there's only one largenumber a, but when I declare another largenumber b and do the exact same things it shows Segmentation fault (core dumped) . I don't understand what's wrong? I can't declare other of type largenumber because it shows segmentation fault
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct largenumber{
int numbers[200];
};
typedef struct largenumber largenumber;
void insert_number_to_largenumber(int* start, int* end, char *char_number){
int* pointer;
int i=0;
printf("array elements\n");
for(pointer=start; pointer!=end; pointer++){
switch (char_number[i]) {
case 48 :
*pointer = 0;
break;
case 49 :
*pointer = 1;
break;
case 50 :
*pointer = 2;
break;
case 51 :
*pointer = 3;
break;
case 52 :
*pointer = 4;
break;
case 53 :
*pointer = 5;
break;
case 54 :
*pointer = 6;
break;
case 55 :
*pointer = 7;
break;
case 56 :
*pointer = 8;
break;
case 57 :
*pointer = 9;
break;
default:
fprintf(stderr, "array element is not a digit!\n");
exit(EXIT_FAILURE);
}
printf("a.numbers[%d] = %d \n", i, *pointer);
i++;
}
}
int main()
{
char* number1;
printf("input first number\n");
scanf("%s", number1);
largenumber a;
insert_number_to_largenumber(a.numbers, a.numbers+strlen(number1), number1);
return 0;
}
char_number[i]-'0'instead of yourswitch.number1which is not initialized, it does not point to valid memory but you try to write the input there. change it tochar number1[100](where100should be a meaningful buffer size).0after the most significant digit.