Je suis en train de simuler le comportement d'un serveur DNS, que j'ai un DB nommé hosts.txt
contenant machine_names/IP_addresses
, par exemple:Comportement anormal pour gérer les fichiers texte dans C
equipo_00/169.0.1.169
sala_oeste_01/200.1.2.200
sala_oeste_02/200.2.3.200
sala_oeste_03/200.3.4.200
MEMFIS_04/201.4.5.201
ICARO_05/200.5.6.200
equipo_06/169.6.7.169
sala_este_07/201.7.8.201
sala_este_08/201.8.9.201
CEC_09/189.9.10.189
Voici mon code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char** argv)
{
char* machine, *ip_add;
FILE* db;
char* flag;
char tmp[256];
char par[256];
printf("> ");
scanf("%s", par);
db = fopen("hosts.txt", "r");
while(db != NULL && fgets(tmp, sizeof(tmp), db) != NULL)
{
if(strstr(tmp, par))
{
flag = "1"; // flag setting to 1 means find the line
machine = strtok(tmp, "/");//here's supposed to get the value of the machine
ip_add = strtok(NULL, "/");//here's supposed to get the value of the ip adress
}
}//while
if(strcmp(flag, "1") == 0) //
{
printf("here\n");
}
else
{
flag = "0"; //flag setting to 0
printf("there\n");
}
printf("flag= %s pc=%s server=%s\n", flag, machine, ip_add);
return 0;
}
Mon code lit à partir de l'entrée standard la valeur de la machine et indique l'adresse IP attribuée à cette machine sur le serveur. Le problème est que le programme n'est pas un comportement normal, je ne sais pas comment modifier mon code à une sortie attendue, par exemple
input: equipo_00
output: flag = 1 pc = equipo_00 server=169.0.1.169
Désolé si la question est assez stupide, je suis nouveau dans cette langue .. merci à tous pour votre aide et excusez mon anglais
Quel est le problème maintenant/quel est le problème que vous voyez avec votre code? –