Add TP8 exo2
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 27 Feb 2017 18:48:35 +0000 (19:48 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 27 Feb 2017 18:48:35 +0000 (19:48 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
TP_8/exo2/Makefile [new file with mode: 0644]
TP_8/exo2/exo2.c [new file with mode: 0644]

diff --git a/TP_8/exo2/Makefile b/TP_8/exo2/Makefile
new file mode 100644 (file)
index 0000000..184cdd5
--- /dev/null
@@ -0,0 +1,31 @@
+TARGET = exo2
+LIBS =
+CC = gcc
+# Enforce C11 ISO standard for now
+CFLAGS = -std=c11 -g -Wall
+LDFLAGS = -g -Wall
+
+.PHONY: default all clean
+
+default: $(TARGET)
+all: default
+
+OBJECTS = $(patsubst %.c, %.o, $(wildcard *.c))
+HEADERS = $(wildcard *.h)
+
+%.o: %.c $(HEADERS)
+       $(CC) $(CFLAGS) -c $< -o $@
+
+.PRECIOUS: $(TARGET) $(OBJECTS)
+
+$(TARGET): $(OBJECTS)
+       $(CC) $(OBJECTS) $(LDFLAGS) $(LIBS) -o $@
+
+clean:
+       -rm -f $(TARGET) $(OBJECTS) 
+
+disassemble: $(TARGET)
+       objdump -d $< | less
+
+symbols: $(TARGET)
+       objdump -t $< | sort | less
diff --git a/TP_8/exo2/exo2.c b/TP_8/exo2/exo2.c
new file mode 100644 (file)
index 0000000..ba0dfd2
--- /dev/null
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+/** Display a prompt to the user then wait for an integer input. */
+int promptValue(const char* prompt) {
+    printf("%s:\n", prompt);
+    int result;
+    scanf("%d", &result);
+    return result;
+}
+
+/** Linked list of int */
+typedef struct link_s {
+    int value;
+    struct link_s* next;
+} link_t;
+
+link_t* list_new(int value) {
+    link_t* link_t_new;        
+    link_t_new = malloc(sizeof(link_t));
+    link_t_new->value = value;
+    link_t_new->next = NULL;
+    return link_t_new;
+}
+
+void list_clear(link_t* link) {
+    free(link);
+}
+
+int main() {
+    link_t* head;
+    int value = promptValue("Entrer l'entier a mettre dans un maillon");
+    head = list_new(value);
+    printf("Valeur entiere dans le maillon: %d\n", head->value);
+    list_clear(head);
+
+    return 0;
+}