Последние пару дней я использовал Coderbyte.com для решения некоторых проблем с кодированием на C. Обычно я использую Codeblocks в качестве своей IDE, я заметил, что иногда рабочее решение в IDE Coderbyte выдает ошибку в Codeblocks.
Например:
#include <stdio.h>
#include <string.h>
void AlphabetSoup(char str[]) {
int i, j, length;
length = strlen(str);
char new_string[length];
char temp;
strcpy(new_string, str);
for (i = 0; i < length; i++) {
for (j = i + 1; j < length; j++) {
if (new_string[i] > new_string[j]) {
temp = new_string[i];
new_string[i] = new_string[j];
new_string[j] = temp;
}
}
}
// code goes here
printf("%s", new_string);
}
int main(void) {
AlphabetSoup(gets(stdin));
return 0;
}
В кодовых блоках в функции main
выдается ошибка:
warning: passing argument 1 of 'gets' from incompatible pointer type [enabled by default]
В любом случае, я не понимаю, почему это решение работает на одной IDE, а не на другой. В другой раз какой-то код, который я вставил, сказал, что он будет работать только в C99.
Теперь, когда я запускаю этот код в Codeblocks, он падает, но не на Coderbyte.
Мои вопросы:
1) Существуют ли разные версии C?
2) Правильно ли этот код или лучше использовать char *
для параметра функции
Я все еще новичок в C