D'accord, voici mon code jusqu'à présenterreurs étranges avec Visual C++
int main()
{
char buffer[10];
int arraySize = -1;
FILE *fp;
int i;
char filename[10];
int userNo = 1;
char stockArray[18][15];
sprintf(filename, "file%d", userNo);
fp = fopen(filename, "r");
while(fgets(buffer, 30, fp) != NULL)
{
if(buffer[0] == '<' && buffer[1] == 's')
{
arraySize++;
}
else if(buffer[0] == '<' && buffer[1] == '/'){printf("< char\n");}
else
{
int t = 0;
int r = 0;
while(buffer[t] != '>')
{
t++;
}
t++;
char holder[15] = {'\0'};
while(buffer[t] != '<')
{
holder[r] = buffer[t];
t++;
r++;
}
strncpy(stockArray[arraySize], holder, r);
printf("%s\n", stockArray[arraySize]);
}
}
fclose(fp);
}
Je suis en cours d'exécution en deux questions étranges. D'abord, quand je fais l'instruction printf, il imprime les données correctes, puis fait ce qui suit: si le premier mot est "banane" et le suivant est "123", il imprime "123ana" et ensuite un tas de caractère bizarre se termine avec, je ne plaisante pas, un visage souriant.
Ensuite, après que le programme est terminé et terminé, je reçois un "Run-Time Check Failure # 2 - Stack autour de la variable 'filename' a été corrompu." Erreur. J'utilise VS2010 et C++, et toute mon expérience jusqu'ici a été avec GCC et C, où je n'ai jamais rencontré ces problèmes avant. Tout conseil serait apprécié
Vous pourriez envisager d'utiliser réellement C++, au lieu d'écrire du code C avec un compilateur C++. chaîne, vecteur, fstream, ostringstream etc. rendent la vie tellement plus facile. – ollb
@Joe: Désolé, mais s'il le lance dans un compilateur C++, c'est C++. Juste parce que ce n'est pas _canonical_/moderne C++ ne change pas ça! –
@tomalak - il n'y a rien dans ce code qui ressemble à du langage C++. C'est finalement une question sur le langage C et la bibliothèque d'exécution. – Joe