burgergold 5$? va chez l'diable! | je dois vérifier dans un fichier /etc/passwd si un userid existe. je fais la lecture avec fgets, et ensuite je concatene dans une variable chaque caractere jusqu'à ce que j'ai atteint un ":" ou la limite de caractere pour un userid
le probleme c'est que je ne semble pas pouvoir faire de strcat à partir d'un caractere de ma ligne récupéré par fgets
Code :
- int name_exist(const char *userid)
- {
- FILE *pFile;
- char ligne[80];
- char pw_name[LOGIN_NAME_MAX] = "";
- int found = 0;
- pFile = fopen("/etc/passwd", "r" );
- if (pFile)
- {
- while (! feof(pFile) && ! found)
- {
- int i = 0;
- fgets(ligne,sizeof ligne,pFile);
- while (ligne[i] != ':' && i <= LOGIN_NAME_MAX)
- {
- strcat(pw_name,(unsigned char *)ligne[i]);
- i++;
- }
- printf("%s\n",pw_name);
- if (strcmp(pw_name,userid) == 0)
- {
- found = 1;
- }
- else
- {
- strcpy(pw_name,"" );
- }
- }
- fclose(pFile);
- }
- return found;
- }
|
si je remplace strcat(pw_name,(unsigned char *)ligne[i]);
par
strcat(pw_name,"a" );
j'ai bien des "a" affiché selon la longueur du userid
quel est le problème avec ligne[i]? |