exo1.c: enforce an stdout buffer write after a printf not doing it.
[TD_C.git] / exo1 / exo1.c
index b4bf35d1dc84937bd00dc20f21d7b73029b4873f..b57e2ac794b94aa56b6209d46d1a23b852f724cf 100644 (file)
@@ -7,7 +7,7 @@ void promptValue(int* addr) {
     scanf("%d", addr);
 }
 
-// The efficience of this swap alternative is debatable ..
+// The efficiency of this swap alternative is debatable ..
 void xorSwap (int *v1, int *v2) {
     if (v1 != v2) {
         *v1 ^= *v2;
@@ -54,11 +54,19 @@ void sortArray(int* array, int length) {
 
 int main() {
     int tab_length = 10;
-    // GCC do not like variable sized array, even with the size variable properly initialized
-    int tab[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    int tab[tab_length];
+    for (int i = 0; i < tab_length; i++) {
+        tab[i] = 0;
+    }
    
     for (int i = 0; i < tab_length; i++) {
         printf("Enter integer value at array's index[%d]? ", i);
+        /* En langage C, une ligne doit être terminée par le caractère '\n'. Tant que       */
+        /* la ligne n'est pas terminée et que le tampon associé au fichier n'est pas plein, */
+        /* les caractères transmis ne seront pas effectivement écrits mais tout simplement  */
+        /* placés dans le tampon. On peut cependant forcer le vidage de ce tampon à l'aide  */
+        /* de la fonction fflush.                                                           */
+        fflush(stdout);
         promptValue(&tab[i]);
     }