View difference between Paste ID: tewJSX3W and wjgUW9r8
SHOW: | | - or go back to the newest paste.
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <string.h>
4
5
#define FGETSADDCHARS 2; //accounts for additional characters fgets adds to our string
6
7
void flushBuffer();
8
char *getInput(int max, char message[]);
9
char *getInputNoNewline(int max, char message[]);
10
11
typedef struct Person {
12
	char *firstName;
13
	char *lastName;
14
	int yob;
15
} Person;
16
17
void flushBuffer() {
18
	int ch;	
19
	while ((ch = getchar()) != '\n' && ch != EOF); //flush the input buffer
20
}
21
22
char *getInput(int max, char message[]) {
23
	char *in;
24
	int maxchars = max+FGETSADDCHARS;
25
	in = malloc(maxchars * sizeof(char));
26
	char *input;
27
	do {
28
		printf("%s", message);
29-
		input = fgets(in, (maxchars), stdin); //max + 2 accounts for characters fgets adds
29+
		input = fgets(in, (maxchars), stdin);
30
		if (in[strlen(in)-1] != '\n') {
31
			printf("Sorry, maximum %d characters\n", (max));
32
			flushBuffer();
33
		}
34
	} while (in[(strlen(in)-1)] != '\n');
35
	return in;
36
}
37
38
char *getInputNoNewline(int max, char message[]) {
39
	char *input;
40
	int len;
41
	input = getInput(max, message);
42
	len = strlen(input);
43
	if (input[len - 1] == '\n' && len > 0) { //strip new line character
44
		input[len - 1] = '\0';
45
	}
46
	return input;
47
}
48
49
int main(int argc, char *argv[]) {
50
	int numPlayers = 3;
51
	char *intIn;
52
	int i = 0;
53
	struct Person *players = malloc (numPlayers * sizeof *players);
54
55
	printf("Hello world Game\n");
56
	for (i = 0; i < numPlayers; ++i) {
57
		players[i].firstName = getInputNoNewline(50, "What is your first name: ");
58
		printf("%s\n", players[i].firstName);
59
		players[i].lastName = getInputNoNewline(80, "What is your last name: ");
60
		printf("%s\n", players[i].lastName);
61
		intIn = getInputNoNewline(4, "What is your YOB: "); //TODO: convert number to integer with sscanf
62
		printf("%s\n", intIn);
63
		printf("-----------------------------------\n");
64
	}
65
	printf("Finished\n");
66-
	if (players[i] != NULL) free(players[i]);	
66+
	if (players != NULL) free(players);	
67
	return 0;
68
}