r-lynx
Гость
|
|
« : 15-03-2005 17:13 » |
|
Типа - код.
struct user { int id; char nick[32]; char ignore[1024]; };
void ignore(char* nick, int id) { struct user tmpuser; FILE *f=fopen("user.dat","r+b"); fseek(f,id*sizeof(user),SEEK_SET); fread(&tmpuser,1,sizeof(user),f); printf("'%i'\t'%s'\t'%s'\n", tmpuser.id, tmpuser.nick, tmpuser.ignore);
int nlen=strlen(nick); int ilen=strlen(tmpuser.ignore); char* pdest = strstr(tmpuser.ignore, nick); if(pdest) { int result = pdest - tmpuser.ignore; if((tmpuser.ignore[(result+nlen)]==',' || tmpuser.ignore[(result+nlen)]==0) && tmpuser.ignore[(result-1)]==',') { for(int i=result;i<ilen-nlen+1;i++) { tmpuser.ignore[i-1]=tmpuser.ignore[i+nlen]; } fseek(f,id*sizeof(user),SEEK_SET); fwrite(&tmpuser,1,sizeof(user),f); } else { strcat(tmpuser.ignore,","); strcat(tmpuser.ignore,nick); fseek(f,id*sizeof(user),SEEK_SET); fwrite(&tmpuser,1,sizeof(user),f); }
} else { strcat(tmpuser.ignore,","); strcat(tmpuser.ignore,nick); fseek(f,id*sizeof(user),SEEK_SET); fwrite(&tmpuser,1,sizeof(user),f); } fclose(f); }
мне надо просто найти в tmpuser.ignore сроку которую я передаю в функцию, если ее нет - то добавить, если есть - то удалить, разделители - запятая. но, если допустим есть строка начальная ,bla,bkflg,bla222,dfgjdfg,bla2,sdfkjgk то оно останавливается на bla222, считая что это bla2, как мне отследить что это не так? Что бы он нашел именно нужную мне строку?
|