char c;
char unprocessed_instruction[9];
int i;
for (i=0; i<num_tasks; i++){
c = fgetc(fp);
int j = 0;
while (c != ' '){
unprocessed_instruction[j] = c;
j = j + 1;
c = fgetc(fp);
}
char instruction[j];
for (int i=0; i<j; i++){
instruction[i] = unprocessed_instruction[i];
}
for (int i=0; i<j; i++){
printf("%c\n", instruction[i]);
}
int i = strcmp(instruction, "initiate");
printf("%i\n", i);
}
Ainsi, le code stocke les caractères initiaux dans un fichier de texte dans un réseau délimité (9 est la taille maximale d'une entrée), puis se déplace dans un tableau qui est la taille de l'entrée réelle, si elle est plus petite. Si l'entrée est "initier", par exemple, l'instruction char [] est initialisée à la taille 8. Cela fonctionne très bien, comme je l'ai testé avec l'impression des éléments du tableau, mais un strcmp entre le tableau et "initier" ne fonctionne pas retour 0. Pourquoi est-ce?strcmp ne retourne pas 0 sur les chaînes « identique »
Les chaînes ne sont pas simplement des tableaux de char –
Vous ne terminez jamais une chaîne de caractères. Vous êtes actuellement chanceux que vous ne vous écrasiez pas avec une faute de segmentation ou une erreur similaire. –
Avez-vous essayé 'printf ("% s \ n ", instruction);' pour vous assurer que les chaînes sont identiques? – immibis