Всякий раз, когда я запускаю следующий код, я получаю сообщение об ошибкеC: Формат определяет тип «символ *»
«Формат определяет тип
char *
но аргумент имеет типint
.»
Программа должна печатать n на n квадрат или треугольник определенного символа. Я довольно новичок в C, и у меня не было большой удачи в устранении этой проблемы.
#include <stdio.h>
#include <ctype.h>
void print_square(int n, char c) {
for (int i=0; i < n; i++) {
for (int j; j < n; j++) {
printf("%c", c);
}
printf("\n");
}
}
void print_triangle(int n, char c) {
int count = 1;
for (int i=0; i < n; i++) {
for (int j; j < count; j++) {
printf("%c", c);
}
count = count + 1;
printf("\n");
}
}
int main(int argc, const char * argv[]) {
int n;
char cmd;
char * c;
do {
printf("Enter T for a triangle, S for a square, "
"Q to quit: ");
scanf("%c", &cmd);
cmd = toupper(cmd);
if (cmd == 'S' || cmd == 'T') {
printf("Enter the size: ");
scanf("%d", &n);
printf("Enter the character: ");
scanf("%c", *c); // error here
if (cmd == 'S') {
print_square(n, *c);
}
else {
print_triangle(n, *c);
}
}
} while (cmd != 'T' && cmd != 'S' && cmd != 'Q');
return 0;
}
Я считаю, что существует разница между символами 'char *' и 'char' – mylogon
, и компилятор также выводит некоторые другие предупреждения: 1) неиспользуемый параметр' argv [] 'и неиспользуемый параметр' argc'. Предложите сигнатуру смены main() на 'int main (void)' 2) эту строку: 'scanf ("% c ", * c);', параметрами будет много указатель адреса, а не содержимое. предположим: 'scanf ("% c ", &c);' также неверно: 'char c;' не 'char * c;' – user3629249
, применяя мой предыдущий комментарий, также означает, что вызовы : 'print_square()' и 'print_triangle()' должен иметь второй параметр 'c', а не' * c'. – user3629249