OK pour Linux 32/64 Windows 32/64 compilé avec GCC, DOS et OS2 avec compilateur MS sur Mac OS o BSD compilé avec GCC, aller à la boucle infinieManipulation de chaînes en C, syntaxiquement correcte, mais ne fonctionne pas avec MacOS ou freeBSD
char *b,p[]={'0','1','2','3','4','5','6','7','8','9','\0'};
for (b=p;(*(b++)=*b););
printf("p=%s\n",p);
// result:
// 123456789
// Test for MacOS or BSD
unsigned char Test=0x0F;
for (b=p;((*(b++)=*b) && --Test););
if (!Test) printf("Error\n");
// OK for Mac OS or FreeBSD
for (b=p;(*b);b++) *b=*(b+1);
printf("p=%s\n",p);
// result:
// 123456789
ok, maintenant il fonctionne, mais la question reste, pourquoi il ne fonctionne pas si la syntaxe est correcte?
= logique. Et s'il vous plaît, clarifiez ce que le programme est censé faire, quel est le résultat attendu et quelle est la production réelle. "ça marche" et "ça ne marche pas" n'est pas exactement descriptif. – kaylum
fait partie d'un routines de traitement de chaîne, les routines fonctionne parfaitement, correctement testé sur différents systèmes d'exploitation, Ubuntu 32bit, Mint 64, Windows XP, Seven 64 bits ainsi que pour pure fantaisie de DOS et OS2. comme en témoigne BDS comme boucle sans fin, vérifié en insérant un compteur pour forcer la sortie. – Blindonet
Pour le code C en particulier, il peut y avoir un écart ** BIG ** entre "syntaxiquement correct" et "ça marche". Quelque chose comme 'printf (" 2 + 2 = 5 ");' est parfaitement bonne syntaxe. –