Problem med array (C)
Hejsan svejsan!
Har skrivit ett program i C där användaren kan fylla en array samt kolla storleken osv. Har ett problem dock. Om man väljer [F]ill och skriver in säg 5 värden, och sedan vill kolla hur många värden som satts in så säger programmet 5 stycken, vilket är sant. Men sedan när man kör [P]rint så finns det två konstiga värden i början, samt att det sista värdet användaren skrev in är borta. Någon här som förstår varför det blir på det viset?
Koden:
/* Program lets user fill an already given array, print its size etc. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int* fillArray(int array[], int *size);
void sizeArray(int size);
void printArray(int *filledArray, int size);
int main(void) {
int array[1000];
int *filledArray;
char val;
int size = 0;
while (1) {
printf("\nMake your choice - ");
printf("[F]ill, [E]xit, [S]ize, [P]rint: ");
scanf(" %c", &val);
switch (val) {
case 'F':
case 'f':
filledArray = fillArray(array, &size);
break;
case 'S':
case 's':
sizeArray(size);
break;
case 'P':
case 'p':
printArray(filledArray, size);
break;
case 'E':
case 'e':
printf("Exiting program!\n");
exit(0);
default:
printf("Invalid choice\n");
break;
}
}
return 0;
}
/* Lets the user fill the array */
int* fillArray(int array[], int *size) {
int i = *size, e;
printf("Choose what integers you wish to insert.\n");
printf("Write -1 to exit.\n");
if ((i =! 0)) {
i = i + 1;
}
do {
scanf(" %d", &e);
if ((e != -1)) {
array[i] = e;
i++;
++*size;
}
}
while (e != -1);
return array;
}
/* Prints the size of the array */
void sizeArray(int size) {
printf("There is currently %d values inserted.\n", size);
}
/* Prints the current array */
void printArray(int *filledArray, int size) {
printf("This is the current array: {");
for (int i = 0 ; i <= size ; i++) {
printf("%d", filledArray[i]);
if (i != size) {
printf(" ,");
}
}
printf("}");
}