Я хочу написать функцию, которая будет принимать два целых числа три раза, а затем возвращать их в порядке первого целого и (на данный момент) печатать их в основном (хотя в конечном итоге я планирую / надеюсь перейти на файловый структура для хранения и организации данных), но я думаю, что у меня может быть проблема с моими указателями, даже если я пропускаю конкатенации (что также может быть другой отдельной проблемой), все, что я пробовал, имеет основной вывод строки (или отсутствие строки) который никогда не соответствует вводу, но операторы печати предполагают, что все зацикленные назначения работают правильно.
#include <stdio.h>
#include <string.h>
const char * entry()
{
int n;
int level;
char habit1entry[6];
char habit2entry[6];
char habit3entry[6];
for (int c = 0; c< 3; c++){
printf("Habit #\n");
scanf("%d", &n);
printf("Level:\n");
scanf("%d", &level);
switch (n)
{
case 1:;
sprintf(habit1entry, "|%d|%d|\n", n,level);
printf("n = %d\n",n);
printf("%s\n",habit1entry);
continue;
case 2:;
sprintf(habit2entry, "|%d|%d|\n", n,level);
printf("n = %d\n",n);
printf("%s\n",habit2entry);
continue;
case 3:;
sprintf(habit3entry, "|%d|%d|\n", n,level);
printf("n = %d\n",n);
printf("%s\n",habit3entry);
continue;
}
}
strcat(habit2entry,habit3entry);
printf("%s\n",habit2entry);
strcat(habit1entry,habit2entry);
printf("%s\n",habit1entry);
char *fullEntry=habit3entry;
printf("%s\n",fullEntry);
return strdup(&fullEntry[0]);
}
int main(){
const char * dataEntry = entry();
//strcpy(dataEntry,entry());
printf("Data:\n%s",dataEntry);
}
вот пример вывода (после правильной печати внутри корпуса переключателя) для входа 3 2 1 1 2 2: "
| 2 | 2 |
| 1 | 1 |
| 2 | 2 |
| 2 | 2 |
| ��
| 2 | 2 |
| ��
* Обнаружено разрушение стека *: ./a.out прекращено
Прервано (сброшено ядро) "
ps Извините, если все это звучит глупо, это мой первый проект C (и первый реальный пост переполнения стека, plz b gentl), возникающий в результате прыжков между java, python и clojure, и я хотел бы взять класс операционных систем, который позволяет вам начинать, не зная C, но ожидает, что вы его поднимите сам по себе и его труднодоступный материал, который объясняет C концепций в области, которая соответствует моим базовым знаниям и текущим ограничениям обучения с точки зрения времени, доступного для глубоких погружений с помощью объяснений, которые для меня в конечном итоге оказались либо безнадежно тайными c, невероятно конкретный случай c или чрезмерно упрощенный / красный недопустимые / бесполезные объяснения концепций программирования, которые я подобрал на других языках. Не хочу жаловаться или проговаривать, и, вероятно, полезно практиковаться в разных способах задавать вопросы и находить ответы на подобные проблемы, но кривая обучения для понимания подобных вещей (настройка файлов компилятора / json требовала тратить часы только чтобы обнаружить, что mcafee удалял мои exe-файлы, которые, как я убедился, были признаком вируса, только для того, чтобы остановить поведение после того, как я перезапустился для незначительного обычного windows обновления, и я понятия не имею, почему) иногда за пределами традиционной структуры больше похоже на стену, и я боюсь, что, возможно, мне следует пересмотреть свой подход, чтобы не тратить слишком много времени на то, чтобы биться головой о ряд очень крепких стен. Любой совет очень ценится.