gpt4 book ai didi

C: 格式指定类型 'char *'

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:57 24 4
gpt4 key购买 nike

每当我运行以下代码时,我都会收到错误消息

"format specifies type char * but the argument has type int."

该程序应该打印一个 n x 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;
}

最佳答案

正如你已经指出的,错误确实在

  scanf("%c", *c);

您需要传递一个指向char 的有效指针,为什么要取消引用?

注意:在您的例子中,您取消引用了一个单元化指针,它调用了 undefined behavior ,无论如何。

要有一个更好的方法(你真的不需要 c 成为那里的指针)做一些像

  char c;
scanf(" %c", &c); //the leading space consumes the newline in input bufer

你应该可以开始了。

因此,您需要传递 c 而不是 *c,这是其他函数调用所要求的。

关于C: 格式指定类型 'char *',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35140691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com