#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef _MSC_VER
#include <crtdbg.h> // needed to check for memory leaks (Windows only!)
#endif
#define FLUSH while(getchar() != '\n')
// Prototype Declarations
int readFile(FILE* ifp,char** words);
int main (void)
{
// Local Definitions
FILE *ifp;
FILE *ofp;
char fnamer[100]="";
char **words;
int *freq;
int i;
int numWords =0;
// Statements
words = (char**)calloc (1001, sizeof(int));
if(words == NULL)
{
printf("Error with Calloc\n");
exit(111);
}
if (!(ifp=fopen("/Users/r3spectak/Desktop/song_row.txt", "r")))
{
printf("sucks");
exit(100);
}
numWords = readFile(ifp,words);
printf("%d", numWords);
for(i=0;i<numWords;i++)
printf("\n%s",words[i]);
#ifdef _MSC_VER
printf(_CrtDumpMemoryLeaks() ? "Memory Leak\n" : "No Memory Leak\n");
#endif
printf("\n\t\tEnd of Program\n");
printf("\n\t\tHave a great day!\n");
return 0;
}
/*===============readFile=================
Pre:
Post:
This function
*/
int readFile(FILE* ifp,char** words)
{
// Local Variables
char buffer[1000] = " ";
int numWords = 0;
// Statements
while (fscanf(ifp," %s",buffer)!=EOF)
{
words[numWords] = (char*)calloc(strlen(buffer)+1,sizeof(char));
if(words[numWords] == NULL)
{
printf("\n");
exit(111);
}
strcpy(words[numWords],buffer);
numWords++ ;
}
return numWords;
}
Le fichier d'entrée contient les éléments suivants: rang, rangée, rangée votre bateau, doucement sur le cours d'eau. Merry, joyeusement, gaiement, gaiement, La vie n'est qu'un rêve.comment lire des chaînes par des virgules en les omettant% [^,] ne fonctionne pas pour moi
Après fscanf mes impressions tableau
Row,
row,
row
your
boat, and so on
ce que je veux, est
Row
row
row
your
boat
j'ai essayé% [^ ,. \ n] et sa ne fonctionne pas pour moi. il imprime des déchets
Alors essayez-vous de séparer les chaînes d'entrée par des virgules? –
Vous n'avez pas besoin de convertir la valeur de retour de 'calloc()' dans un programme C. –
@ H2CO3 im essayant de ne pas lire les virgules du tout. –