Skip to content
Snippets Groups Projects
Commit 249ec0c1 authored by 20041679's avatar 20041679
Browse files

added todays ex. 1, 4. note: buffer overflow in ex 4

parent c4483198
No related branches found
No related tags found
No related merge requests found
#include <stdio.h>
#include <string.h>
#define ARR_LEN(a) (sizeof(a) / sizeof(*a))
typedef struct {
char first_name[64];
char last_name[64];
unsigned short age;
} Person;
void strip(char *s) {
s[strcspn(s, "\n")] = '\0';
}
char *str_input(char *s, size_t size) {
char *ret = fgets(s, size, stdin);
strip(ret);
return ret;
}
Person person_read() {
Person ret;
puts("nome");
str_input((char *)&ret.first_name, ARR_LEN(ret.first_name));
puts("cognome");
str_input((char *)&(ret.last_name), ARR_LEN(ret.last_name));
puts("eta'");
scanf("%hu", &ret.age);
return ret;
}
void person_print(Person person) {
printf(
"nome: %s\ncognome: %s\neta': %hu\n",
person.first_name,
person.last_name,
person.age
);
}
int main(void) {
person_print(person_read());
}
Mario Rossi 40
Giuseppe Verdi 70
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define ARR_LEN(a) (sizeof(a) / sizeof(*a))
typedef struct {
char first_name[64];
char last_name[64];
unsigned short age;
} Person;
Person person_read(FILE *f) {
Person person;
// FIXME: buffer overflow
fscanf(
f, "%s %s %hu\n",
person.first_name,
person.last_name,
&person.age
);
return person;
}
void person_print(FILE *f, Person person) {
fprintf(f,
"[Nome]: %s [Cognome]: %s [Età]: %hu\n",
person.first_name,
person.last_name,
person.age
);
}
int main(void) {
FILE *f_in;
if (!(f_in = fopen("in.txt", "r"))) {
return EXIT_FAILURE;
}
Person p1 = person_read(f_in);
Person p2 = person_read(f_in);
fclose(f_in);
FILE *f_out;
if (!(f_out = fopen("out.txt", "w"))) {
return EXIT_FAILURE;
}
person_print(f_out, p2);
person_print(f_out, p1);
fclose(f_out);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment