【发布时间】:2016-01-30 03:45:18
【问题描述】:
相关代码如下:
我对 c 的世界有些陌生,所以请帮帮我
问题出在代码底部:divider = getchar()
这段代码让程序卡住了,之后就再也没有进展了。它只是一个允许输入的无限循环。怎么了。请具体一点,因为我对复杂的概念并不完全熟悉(尽管无论解决方案多么复杂,我都渴望解决这个问题)
void read_in(int n, int m)
{
int a = 0, b = 0, i = 0, x;
while (a != n && b != m)
{
if (b == 0 && i == 0)
{
printf("\nEnter row %d: ", a);
}
scanf("%d", &array[a][b]);
diglength[a][b] = floor (log10 (abs (array[a][b]))) + 1;
if (b == m - 1)
{
a++;
b = -1;
}
if (b == -1 && i != 0 && a != n)
{
printf("\nEnter row %d: ", a);
}
i++;
b++;
}
printf("\nEnter the number of new lines in between rows: ");
scanf("%d", &newlines);
printf("\nEnter the span of each array element: ");
scanf("%d", &span);
check_span(n, m);
getchar();
printf("\nEnter the type of justification (l - left r - right): ");
just = getchar();
while (just != 'r' && just != 'l')
{
printf("\nInvalid argument");
printf("\nEnter the type of justification (l - left r - right): ");
scanf(" %c", &just);
}
printf("\nEnter the character to be placed in between elements: ");
getchar();
divider = getchar();
//THE PROGRAM NEVER GETS PAST HERE IT GETS STUCK ON THE ABOVE CHARACTER ASSIGNMENT...WHY
printf("it got here "); printf("%c", divider);
}
【问题讨论】:
-
您可以删除很多空行以使您的代码更具可读性。
-
只是猜测,最后一个 scanf 中有一个空格...我建议缩小范围,制作一个具有相同问题的更简单示例并继续剥离代码。这样一来,SO 上的人就会更有帮助。
-
代码格式化的工作方式:首先需要一个空行,然后每行代码必须以 4 个空格字符开头。缩进时应使用额外的空格字符。
-
是的,我已经尝试过了。很抱歉,乱码很着急,我试着修复一下。
-
@Chad 如果您键入一些字符,然后按
Enter,它是否仍然被阻止?
标签: c