относительно:
while ( !feof(csvFile) ) {
fscanf(csvFile, "%s%*[^,]", word);
if ( strcmp(word, name) == 0 )
printf("name found");
}
предложить использовать:
while ( fgets( word, sizeof(word), csvFile ) )
{
char *token = strtok( word, ", " );
if( strcmp( token, name ) == 0 )
{
printf("name found");
}
}
Однако, если вы не хотите использовать strtok()
, предложите:
while ( fgets( word, sizeof word, csvFile ) )
{
char *comma = strchr( word, ',');
*comma = \0';
if( strcmp( word, name ) == 0 )
{
printf("name found");
}
}
однако, если вы действительно хотите использовать семейство функций scanf()
:
while ( fgets( word, sizeof word, csvFile ) )
{
char possibleMatch[1000];
if( sscanf( "%999[^,]", word, possibleMatch ) == 1 )
{
if( strcmp( possibleMatch, name ) == 0 )
{
printf("name found");
}
}
}
Однако, если вы действительно хотите использовать fscanf()
:
while ( fscanf( csvFile, "%999[^,]", word ) == 1 )
{
if( strcmp( word, name ) == 0 )
{
printf("name found");
}
//consume rest of input file line
int ch;
while( ( ch = getchar() ) != EOF && ch != '\n' ){;}
}
или, может быть, даже лучше:
while ( fscanf( csvFile, " %999[^,] %*[^\n]", word ) == 1 )
{
if( strcmp( word, name ) == 0 )
{
printf("name found");
}
}