如何使代码接受下一个单词而不仅仅是第一个单词



在这段代码中,我面临的问题是,它只接受结尾有逗号的第一个单词。该文件有许多末尾带有逗号的单词,但它接受了第一个单词。例如,如果我选择输入您的身份证号码,这不是第一个单词。它可能是文件中的第二个或第三个单词,那么我将如何处理它?

第一部分

#define STRING_SIZE 49
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void RemoveNewLines( char * buffer ){
char * ptr;
ptr = strchr( buffer, 'n' );
if( ptr )
* ptr = 0;
ptr = strchr( buffer, 'r' );   // in case you see carriage returns also
if( ptr )
* ptr = 0;
}

第二部分

int main(){
char instr[STRING_SIZE+1], string[STRING_SIZE+1];
FILE * fr = NULL;
int flag = 0;
size_t length = 0;
fr = fopen("file.csv","r");
if( fr == NULL ){
printf( "Unable to open filen" );
return 1;
}    
printf("Enter your name: ");
fgets( instr, STRING_SIZE, stdin);
RemoveNewLines( instr );
strcat( instr, "," );     // append a comma to the user's entry
length = strlen( instr );
while( fgets( string, STRING_SIZE, fr ) ){
RemoveNewLines( string );
if( strncmp( instr, string, length ) == 0 ){
flag = 1;
break;   }   }
fclose(fr);      
if( flag == 1 )   // I prefer positive logic{
printf( "Your details :" );
printf( "'%s'n", string  );
return 0;
}
printf("Access denied.n");
return -1;
}

好吧,您正在将文件中一行的开头与提供的内容以及附加的,进行比较。所以这确实是你要求它做的。

如果你想搜索任意字段,而不是这种方法,我会从csv中分割读取的行,并将第n个字段与提供的字段进行比较。假设这个csv文件是一个基本的csv文件(没有引号或嵌入逗号/新行(,您可以通过对string执行N个strtok()操作来轻松地做到这一点。

相关内容

最新更新