/* vir2tab.c */ /* Programme de conversion des séparateurs de champs. Transforme les virgules en TAB, supprime les guillemets F5YG 20/08/2006 This program is placed in the public domain. */ #include int main ( int argc, char * argv [] ) { FILE * infile; FILE * outfile; char cVar; char pszOutFileName [80] = "data.txt"; switch ( argc ) { case 3: if ( strlen ( argv [2] ) > 63 ) { printf ( "\nvir2tab : le nom du fichier cible ne peut excéder 63 caractères ( limitation DOS )\n" ); return 2; } /* endif */ strcpy ( pszOutFileName, argv [2] ); case 2: if ( strlen ( argv [1] ) > 63 ) { printf ( "\nvir2tab : le nom du fichier source ne peut excéder 63 caractères ( limitation DOS)\n" ); return 3; } /* endif */ if ( argv [1][0] != '/' ) break; default: printf ( "\nConversion des séparateurs de champs d'un fichier de données," ); printf ( "\nil remplace les virgules par le caractère TAB," ); printf ( "\nil supprime les guillemets (format compatible gnuplot).\n" ); printf ( "\nSi aucun fichier cible n'est précisé, celui-ci sera sauvegardé comme 'data.txt'.\n" ); printf ( "\nUsage : vir2tab [fichier cible]\n" ); return 1; } /* endswitch */ printf ( "\nvir2tab : Conversion des vigules dans '%s' en TAB dans '%s'\n", argv [1], pszOutFileName ); infile = fopen ( argv [1], "r" ); if ( infile == NULL ) { printf ( "\nvir2tab : Impossible d'ouvrir le fichier source '%s'\n", argv [1] ); return 4; } /* endif */ outfile = fopen ( pszOutFileName, "w" ); if ( outfile == NULL ) { printf ( "\nvir2tab : Impossible de créer le fichier cible '%s'\n", pszOutFileName ); return 5; } /* endif */ while ( !feof ( infile ) ) { cVar = fgetc ( infile ); if ( cVar == 44 ) fputc ( 9, outfile ); if ( cVar != 44 && cVar != 34) fputc ( cVar, outfile ); } /* endwhile */ fclose ( infile ); fclose ( outfile ); printf ( "\nvir2tab : Conversion terminée\n" ); return 0; }