printf和putchar之间有什么区别?

printf和putchar之间有什么区别?,c,C,这是我的密码 void display(char ch, int lines, int width); int main() { char c; int rows, cols; while (1) { scanf("%c %d %d", &c, &rows, &cols); display(c, rows, cols); if (c == '\n') break;

这是我的密码

void display(char ch, int lines, int width);
int main()
{
    char c;
    int rows, cols;
    while (1)
    {
        scanf("%c %d %d", &c, &rows, &cols);
        display(c, rows, cols);
        if (c == '\n')
            break;
    }
}
void display(char ch, int lines, int width) 
{

    for (int i = 0; i < lines; i++)
    {
        for (int j = 0; j < width; j++)
            printf("%c", ch);
        printf('\n');
    }

}
但它不起作用。所以我就这样改变

void display(char ch, int lines, int width) 
{

    for (int i = 0; i < lines; i++)
    {
        for (int j = 0; j < width; j++)
           putchar(ch);
        putchar('\n');
    }

}
它工作得很好。为什么代码运行良好?? printf和putchar之间有什么区别

printf'\n';是一个错误,编译器应该警告您。printf的第一个参数应该是字符串,如\n,而不是字符常量,如'\n'

源代码\n表示由两个字符组成的字符串,第一个是新行字符,第二个是表示字符串结尾的空字符。以这种方式在表达式中使用时,它会自动转换为指向其第一个元素的指针,并将该指针传递给printf


源代码“\n”表示一个字符。它的值是该字符的代码。当它被传递到printf时,该值被传递。这是传递给printf的错误内容,这就是第一个程序无法运行的原因。

当printf中有%c时,它将只打印字符。但你的观点是你给了2,但它打印了一个,为什么?请参阅ASCII表,并从这里找到数字到字符的等效值。另一方面,putchar只是字符打印机。

这能回答您的问题吗@louk1397:您似乎错过了第一组源代码将“\n”传递给printf而不是\n的错误,因此问题不是printf和putchar之间有什么不同,而是printf的正确参数是什么。您需要定义什么不起作用。当您试图编译基于printf'\n'调用应该具有的代码时,是否出现错误?当您尝试运行程序时,是否出现错误?你在屏幕上看到了什么?在这种情况下,编译器很可能在printf'\n'调用时被阻塞,因为'\n'是错误类型的参数,但是如果您发布编译器错误或意外输出,这将对每个人都有很大帮助。include也会有帮助。
void display(char ch, int lines, int width) 
{

    for (int i = 0; i < lines; i++)
    {
        for (int j = 0; j < width; j++)
           putchar(ch);
        putchar('\n');
    }

}