Не знаю, в чем проблема, но у меня есть содержимое в файле "m.fs182", и когда я запускаю его через командную строку вместе с исполняемым файлом "./P0 m.fs182", я получаю сообщение 'abort'это должно быть отображено, если указатель файла возвращает NULL.Который не должен иметь место, любой ответ относительно того, почему это делает это?
#include "display.h"
#include "traversals.h"
#include "tree.h"
#include "node.h"
using namespace std;
int main(int argc, char **argv) {
char buffer[100];
FILE *fp;
char* fb = (char *)malloc(strlen("out") + 7);
if(argc > 2) {
string sb = "out";
strcpy(fb, sb.c_str());
fp = tmpfile();
if(fp == NULL) {
abort();
}
do
{
fputs(buffer,fp);
}while(fgets(buffer, sizeof(buffer), stdin));
rewind(fp);
}
else if(argc == 2) {
char *filename = (char *)malloc(strlen(argv[1] + 7));
strcpy(filename, argv[1]);
strcpy(fb, argv[1]);
strcat(filename, ".fs182");
if((fp = fopen(filename, "r")) == NULL) {
abort();
}
}else {
printf("%s", "Invalid numbr of arguments\n");
return 1;
}
Node* root = buildTree(fp);
char* traversePre = (char *)malloc(strlen(fb)+17);
char* traverseIn = (char *)malloc(strlen(fb)+17);
char* traversePost = (char *)malloc(strlen(fb)+17);
strcpy(traversePre, fb);
strcat(traversePre, ".preorder");
strcpy(traverseIn, fb);
strcat(traverseIn, ".inorder");
strcpy(traversePost, fb);
strcat(traversePost, ".postorder");
printf("Preorder: ");
traversePreorder(root, 0, traversePre);
printf("\nInorder: ");
traverseInorder(root, 0, traverseIn);
printf("\nPostorder: ");
traversePostorder(root, 0, traversePost);
return 0;
}