*代码来自一本名为的书 用B编写的Byron gottfried *
*当我尝试输入一个字符时,程序停止*
Spinner spinner = (Spinner) dialog.findViewById(R.id.dlgSpinner);
答案 0 :(得分:3)
该行:
scanf("%[^\n], &line");
应该是:
scanf("%[^\n]", line);
即。将格式字符串中的结束"
放在正确的位置,而&
之前不要line
。
此外,在某些平台上,stdout缓冲区在包含换行符或变满之前不会刷新,因此您应该添加fflush( stdout)
调用。你将在Windows上侥幸成功。
您还可以考虑使用ctype.h
函数来简化代码。
由于这是一个简单的转录错误(引用的书不包含此错误)而不是编程问题,并且问题已经关闭,这纯粹是暂时的,但我建议以下实现。< / p>
#include <stdio.h>
#include <ctype.h>
int main()
{
char line[80];
int count;
/* read in the entire string */
printf("Enter a line of text below:\n");
scanf("%[^\n]", line);
/* encode each individual character and display it */
for (count = 0; line[count] != '\0'; ++count)
{
char plaintext = line[count];
char encoded = '.';
if (isupper(plaintext))
{
encoded = (((plaintext + 1) - 'A') % 26) + 'A';
}
else if (islower(plaintext))
{
encoded = (((plaintext + 1) - 'a') % 26) + 'a';
}
else if (isdigit(plaintext))
{
encoded = (((plaintext + 1) - '0') % 10) + '0';
}
putchar(encoded);
}
return 0;
}