Я очень плохо знаком с C
, так что я уверен, что делаю грузы неправильно, но это меня озадачивает.
Мой код должен получить заголовок от пользователя и создать папку в каталоге маршрутов с этим именем. Это работает, только если я установил точку останова в реализации makeFolder()
. По какой-то причине небольшой отдых перед нажатием continue
заставляет его работать (я использую Xcode).
По не работает Я имею в виду, что он возвращает 0 правильно, но папка не создается.
Это одна из моих первых попыток сделать что-нибудь с C
, и я просто бездельничаю, пытаясь выучить это.
Редактировать Большое спасибо за ваши ответы и комментарии. Сейчас он работает, как ожидалось, и я немного узнал по пути. Вы все ученые и джентльмены.
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <string.h>
#define MAX_TITLE_SIZE 256
void setTitle(char* title) {
char *name = malloc (MAX_TITLE_SIZE);
printf("What is the title? ");
fgets(name, MAX_TITLE_SIZE, stdin);
// Remove trailing newline, if there
if(name[strlen(name) - 1] == '\n')
name[strlen(name) - 1] = '\0';
strcpy(title, name);
free(name);
}
// If I set a breakpoint here it works
void makeFolder(char * parent, char * name) {
char *path = malloc (MAX_TITLE_SIZE);
if(parent[0] != '/')
strcat(path, "/");
strcat(path, parent);
strcat(path, "/");
//strcat(path, name);
//strcat(path, "/");
printf("The path is %s\n", path);
mkdir(path, 0777);
free(path);
}
int main (int argc, const char * argv[]) {
char title[MAX_TITLE_SIZE];
setTitle(title);
printf("The title is \'%s\'", title);
makeFolder(title, "Drafts");
return 0;
}