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
| int enlever_lig_col(int *nbAF, int *nbAFS, int *nbAFNS) {
FILE *pFile, *pFileOut, *pCol, *fp, *fpAttF, *fp_cause, *fpNS;
char sLine[MAXLINE], s[100], t[100], ch[100], type[10], attribut[20], comparateur[10], valeur[20];
int i, j, h=0, k=0, nColumn[32] = {0}, nCpt = 0, nAttribLength= 0, nMaxAttribLength = 0;
int dataTabStringMax = STEP;
int nShift = 0, nbA=0, nbAS=0, nbANS=0;
int vv, pos, nbO=0;
dataStruct *dataTabString;
pFile = fopen("entree.txt", "r");
pFileOut = fopen("sortie.txt", "w+");
pCol = fopen("position.txt", "w+");
if (pFile && pFileOut) {
dataTabString = (dataStruct *) malloc(dataTabStringMax * sizeof(dataStruct));
while (fgets(sLine, MAXLINE, pFile)) {
memset(&dataTabString[nCpt], 0, sizeof(dataStruct));
sscanf(sLine, "%d%s", &dataTabString[nCpt].sNum, dataTabString[nCpt].sAttrib);
if (strlen(dataTabString[nCpt].sAttrib) > 0)
nAttribLength = strlen(dataTabString[nCpt].sAttrib)+ 1;
if (nAttribLength>0) {
sscanf(sLine, "%d%s", &dataTabString[nCpt].sNum, dataTabString[nCpt].sAttrib);
for (i = 0; i<nAttribLength; i++) {
if (dataTabString[nCpt].sAttrib[i] == '0')
nColumn[i]+=1;
}
nCpt+=1;
if (nAttribLength > nMaxAttribLength)
nMaxAttribLength = nAttribLength;
}
if (nCpt == dataTabStringMax) {
dataTabStringMax += STEP;
dataTabString = (dataStruct *) realloc(dataTabString,
dataTabStringMax * sizeof(dataStruct));
if (dataTabString == NULL)
exit(1);
}
}
// Lecture tableau de structures pour supprimer les "0"
for (j = 0; j<nCpt; j++) {
nShift = 0;
for (i = 0; i<nMaxAttribLength; i++) {
if (nColumn[i] == nCpt) {
memmove(&dataTabString[j].sAttrib[i-nShift], &dataTabString[j].sAttrib[i-nShift+1], strlen(&dataTabString[j].sAttrib[i-nShift+1]) + 1);
nShift+=1;
if (j == 0) {
//printf("pos = %d\n",i);
fprintf(pCol, "%d\n", i);
}
}
}
if (strcspn(dataTabString[j].sAttrib, "1") <strlen(dataTabString[j].sAttrib))
{
fprintf(pFileOut, "%d %s\n", dataTabString[j].sNum, dataTabString[j].sAttrib);
nbO++;
}
}
free(dataTabString);
}
} |
Partager