在 C 中打印特定符号的矩形时出现问题
Problem when printing a rectangle of a particular symbol in C
最近在钻研C语言,决定尝试做一个矩形程序。
但是,我遇到了一个问题,似乎无法找到它存在的原因。
每次我输入一些行数、列数和一个符号时,它总是打印出 10 列具有正确的符号和行数。
这是我的代码。
#include <stdio.h>
int main()
{
int rows;
int columns;
char symbol;
printf("\nEnter # of rows: ");
scanf("%d", &rows);
printf("Enter # of columns: ");
scanf("%d", &columns);
scanf("%c");
printf("Enter a symbol: ");
scanf("%c", &symbol);
for(int i = 1; i <= rows; i++)
{
for(int j = 1; j <= columns; j++)
{
printf("%c", symbol);
}
printf("\n");
}
return 0;
}
这是输出。
PS D:\CFolder\NestedLoops> cd "d:\CFolder\NestedLoops\" ; if ($?) { gcc NestedLoops.c -o
NestedLoops } ; if ($?) { .\NestedLoops }
Enter # of rows: 3
Enter # of columns: 5
Enter a symbol: $
$$$$$$$$$$
$$$$$$$$$$
$$$$$$$$$$
PS D:\CFolder\NestedLoops>
无论我输入多少列,它总是打印 10 列。
附带说明一下,当我尝试 运行 该程序但删除符号输入时它工作正常。
问题出在这里:
scanf("%c");
scanf
需要使用一个参数,因为您没有提供任何参数,我的猜测是 scanf
正在用上一次调用 scanf
留下的换行符 (ASCII 10) 的值,这就是它总是打印 10 列的原因。
要使用尾随换行符,而不是空 scanf
,请在格式说明符前使用 space:
scanf(" %c", &symbol);
现在应该可以了。
最近在钻研C语言,决定尝试做一个矩形程序。 但是,我遇到了一个问题,似乎无法找到它存在的原因。
每次我输入一些行数、列数和一个符号时,它总是打印出 10 列具有正确的符号和行数。
这是我的代码。
#include <stdio.h>
int main()
{
int rows;
int columns;
char symbol;
printf("\nEnter # of rows: ");
scanf("%d", &rows);
printf("Enter # of columns: ");
scanf("%d", &columns);
scanf("%c");
printf("Enter a symbol: ");
scanf("%c", &symbol);
for(int i = 1; i <= rows; i++)
{
for(int j = 1; j <= columns; j++)
{
printf("%c", symbol);
}
printf("\n");
}
return 0;
}
这是输出。
PS D:\CFolder\NestedLoops> cd "d:\CFolder\NestedLoops\" ; if ($?) { gcc NestedLoops.c -o
NestedLoops } ; if ($?) { .\NestedLoops }
Enter # of rows: 3
Enter # of columns: 5
Enter a symbol: $
$$$$$$$$$$
$$$$$$$$$$
$$$$$$$$$$
PS D:\CFolder\NestedLoops>
无论我输入多少列,它总是打印 10 列。
附带说明一下,当我尝试 运行 该程序但删除符号输入时它工作正常。
问题出在这里:
scanf("%c");
scanf
需要使用一个参数,因为您没有提供任何参数,我的猜测是 scanf
正在用上一次调用 scanf
留下的换行符 (ASCII 10) 的值,这就是它总是打印 10 列的原因。
要使用尾随换行符,而不是空 scanf
,请在格式说明符前使用 space:
scanf(" %c", &symbol);
现在应该可以了。