warning C4047: 'initialisation'*: les niveaux d'indirection de 'char' et de 'char [13]' sont différents
Bonjour,
Lors de la compilation, j'obtiens cette erreur du compilateur :
Code:
1 2 3 4 5
| Main.c
Main.c(12): warning C4047: 'initialisation'*: les niveaux d'indirection de 'char' et de 'char [13]' sont différents
d:\6. megasync\elearning\c\optableau\main.c(26) : warning C4700: variable locale 'tabNumb1' non initialisée utilisée
d:\6. megasync\elearning\c\optableau\main.c(43) : warning C4700: variable locale 'tabNumb2' non initialisée utilisée
cl.exe /c Entry.c |
Main.c
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| #include <stdio.h>
#include <stdbool.h>
#include "Entry.h"
#include "Output.h"
#include "OperTable.h"
int main(){
int numEntry;
bool continueApp = true;
char tabPlace1 = "./table1.txt", tabPlace2 = "./table2.txt";
int *tabNumb1, *tabNumb2;
do
{
int sizeTabSum;
ShowMenu();
switch (NumbMenu(1, 6))
{
case 1:
if ((sizeTabSum = CountLines(&tabPlace1)) == -1) break;
SizeTab(tabNumb1, sizeTabSum);
SumTab(tabNumb1, sizeTabSum);
break;
case 2:
if ((sizeTabSum = CountLines(&tabPlace1)) == -1) break;
SizeTab(tabNumb1, sizeTabSum);
AverageTab(tabNumb1, sizeTabSum);
break;
case 3:
if ((sizeTabSum = CountLines(&tabPlace1)) == -1) break;
SizeTab(tabNumb1, sizeTabSum);
SizeTab(tabNumb2, sizeTabSum);
CopPasteTab(tabNumb1, tabNumb2, sizeTabSum);
break;
case 4:
if ((sizeTabSum = CountLines(&tabPlace1)) == -1) break;
SizeTab(tabNumb1, sizeTabSum);
MaxTab(tabNumb1, sizeTabSum, 20);
break;
case 5:
if ((sizeTabSum = CountLines(&tabPlace1)) == -1) break;
SizeTab(tabNumb1, sizeTabSum);
SortTab(tabNumb1, sizeTabSum);
break;
case 6:
continueApp = false;
break;
default:
continueApp = false;
break;
}
} while (continueApp == true);
return 0;
} |
Entry.c
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| #include <stdio.h>
#include <stdlib.h>
int NumbMenu(const int MIN, const int MAX) {
int numbChoosed = 0;
//loop break, only "if" validated
while (1)
{
printf("Choisissez l'une des option du menu comprises entre %d et %d : ", MIN, MAX);
char keybEntry[10 + 1];
fgets(keybEntry, 10 + 1, stdin);
int status = 0;
status = sscanf(keybEntry, "%d", &numbChoosed);
if (status == 1 && numbChoosed >= MIN && numbChoosed <= MAX) break;
// Message showed, only "if" not validated
printf("! Entree incorrect - Veuillez entrer un nombre compris entre %d et %d !\n", MIN, MAX);
}
return numbChoosed;
}
int CountLines(char* fileName) {
FILE* fileBuffer;
int numbLines = 0;
if ((fileBuffer = fopen(fileName, "r")) == NULL) {
printf("! Erreur - Echec de l'ouverture du fichier %s !\n", fileName);
// sentry value
return -1;
}
int number;
while (fscanf(fileBuffer, "%d\n", number) != NULL) ++numbLines;
fclose(fileBuffer);
return numbLines;
}
int SizeTab(int* tab, int sizeTab) {
tab = malloc(sizeof(int)*(sizeTab + 1));
if (tab == NULL) {
puts("! Erreur - Echec de l'allocation de memoire");
return 1;
}
return 0;
}
int GetTabNumbTxt(int *tab, char *fileName) {
FILE* fileBuffer;
if ((fileBuffer = fopen(fileName, "r")) == NULL) {
printf("! Erreur - Echec de l'ouverture du fichier %s !\n", fileName);
perror("! L'erreur suivante est apparue:");
// sentry value
return 1;
}
while((sscanf(fileBuffer, "%d\n", tab)) != EOF)
tab++;
fclose(fileBuffer);
return 0;
} |
J'ai regardé sur internet ce que ça pouvait vouloir dire : https://docs.microsoft.com/fr-fr/cpp...-level-1-c4047.
Mais je ne comprend pas trop pourquoi il me sort cette erreur de pointeur. Est-ce lié au fait que j'ai déclaré deux tableaux de caractères, l'un à la suite de l'autre ?
Merci d'avance,
Red'