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 77 78 79 80 81 82 83
| 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);
}
} |