online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, PHP, Ruby, C#, VB, Perl, Swift, Prolog, Javascript, Pascal, HTML, CSS, JS Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #define _GNU_SOURCE #include <stdio.h> #include <string.h> #include <stddef.h> #include <stdlib.h> #include <errno.h> #include <limits.h> struct student_s { char *name; int index; }; static int students_name_cmp(const void *a, const void *b) { const struct student_s *s1 = a; const struct student_s *s2 = b; return strcmp(s1->name, s2->name); } static int students_index_cmp(const void *a, const void *b) { const struct student_s *s1 = a; const struct student_s *s2 = b; return s1->index - s2->index; } int main() { struct student_s *students = NULL; size_t students_cnt = 0; FILE *fp = stdin; size_t read; char *line = NULL; size_t len = 0; while ((read = getline(&line, &len, fp)) != -1) { students = realloc(students, (students_cnt + 1) * sizeof(*students)); if (students == NULL) { fprintf(stderr, "ERROR allocating students!\n"); exit(-1); } const const char * const commapos = strchr(line, ','); if (commapos == NULL) { fprintf(stderr, "ERROR file is badly formatted!\n"); exit(-1); } const size_t namelen = (commapos - line) + 1; students[students_cnt].name = malloc(namelen * sizeof(char)); memcpy(students[students_cnt].name, line, namelen - 1); students[students_cnt].name[namelen] = '\0'; errno = 0; char *endptr; const long int tmp = strtol(&line[namelen], &endptr, 10); if (errno) { fprintf(stderr, "ERROR converting student index into number\n"); exit(-1); } if (tmp <= INT_MIN || INT_MAX <= tmp) { fprintf(stderr, "ERROR index number is out of allowed range\n"); exit(-1); } students[students_cnt].index = tmp; if (*endptr != '\n' && *endptr != '\0') { fprintf(stderr, "ERROR there is some arbbish characters after the index!"); exit(-1); } students_cnt++; } if (line) { free(line); } // sort by index qsort(students, students_cnt, sizeof(*students), students_index_cmp); // print students out sorted by index printf("Students sorted by index:\n"); for (size_t i = 0; i < students_cnt; ++i) { printf("student[%zu] = '%s', %d\n", i, students[i].name, students[i].index); } // now we have students. We can sort them. qsort(students, students_cnt, sizeof(*students), students_name_cmp); // print students out sorted by name printf("Students sorted by name:\n"); for (size_t i = 0; i < students_cnt; ++i) { printf("student[%zu] = '%s', %d\n", i, students[i].name, students[i].index); } // free students for (size_t i = 0; i < students_cnt; ++i) { free(students[i].name); } free(students); return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue