Dans le code ci-dessous, le fichier test.txt a les données suivantes:
192.168.1.1-90
192.168.2.2-80strtok et le stockage dans les tableaux: sortie pas comme prévu
La sortie de cette n'est pas comme prévu. je me attends à la sortie soit
192.168.1.1
192.168.2.2
Toute aide serait grandement appréciée.
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char *result[10][4];
int i=0;
const char s[2] = "-";
char *value,str[128];
fp = fopen("test.txt", "r");
if (fp == NULL)
printf("File doesn't exist\n");
else{
while(!feof(fp)){
if(fgets(str,sizeof(str),fp)){
/* get the first value */
value = strtok(str, s);
result[i][0]=value;
printf("IP : %s\n",result[i][0]); //to be removed after testing
/* get second value */
value = strtok(NULL, s);
result[i][1]=value;
printf("PORT : %s\n",result[i][1]); //to be removed after testing
i++;
}}
for (int k=0;k<2;k++){
for (int j=0;j<2;j++){
printf("\n%s\n",result[k][j]);
}
}
}
return(0);
}
Vous avez la sortie attendue mais ajoutez également la sortie réelle (erronée). – kaylum
La boucle 'while' remplace constamment le même tampon' str'. Ce n'est probablement pas ce que tu veux. Et aussi voir [Pourquoi est-ce que tant que (! Feof (fichier)) "toujours mal?] (Http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong) – kaylum
Si faire POSIX, remplace 'strtok (str, s)' par 'strdup (strtok (str, s))'. Veillez également à libérer 'result [i] [x]' s'il n'est pas utilisé plus que. – alk