Я новичок здесь и с c кодированием, поэтому, пожалуйста, попробуйте со мной набраться терпения.
Моя проблема заключается в получении ввода символов как с помощью getchar (), так и scanf ("% c" ) для рекурсивного вызова.
Компилятор игнорирует getchar () и выводит \ n вместо вывода символа.
выданная строка: pfile-> content.folder.files [ i] = newFile (getchar ());
, запрещающий мне создавать вложенные файлы / папки ... Функция newFile должна создавать папку или файл (текстовый файл), и в случае, если это я должен указать количество файлов внутри папки, и есть рекурсивный вызов для создания файлов внутри уже созданной папки.
typedef struct {
char *name; //name of File
char type; // 'f' - data file, 'd'-folder.
union {
char data[81]; //f -80 chars array for content of file.
struct { //d -arry of pointers to 'File' Files.
struct File ** files;
unsigned int size;
}folder;
}content;
}File;
Функция:
FILE * newFile(char type){
File *pfile = (File*)malloc(sizeof(File)); //creating new File
if (type != 'f' && type != 'd') { // in case of wrong input of type.
printf("Wrong input!\n");
return NULL;
}
//File *pfile = (File*)malloc(sizeof(File)); //creating new File
printf("Enter File name: ");
scanf(" %s", &pfile->name);// Name of new File
if (type == 'f') { // New File is 'folder'
printf("Enter number of files in folder '%s': ",&pfile->name);
scanf(" %d", &pfile->content.folder.size);
if (pfile->content.folder.size == 0) { // Zero files in the folder
pfile->content.folder.files[pfile->content.folder.size - 1] = NULL; // No more files / empty folder
}
pfile->content.folder.files = (File**)malloc(pfile->content.folder.size * sizeof(File));
for (int i = 0; i < pfile->content.folder.size; ++i) { // creates 'size' file per folder
printf("Enter type of %d file(d-folder,f-file): ", i + 1);
pfile->content.folder.files[i] = newFile(getchar()); //<<<<<=====ISSUE HERE !
}
return pfile;
}
else /*if (type == 'd')*/ { //File creation
printf("Enter file's text:\n");
scanf(" %s",&pfile->content.data);
}
return pfile;
}
Я буду признателен за любую идею или предложения по улучшению.
Дан.