输入任何字符时程序停止

时间:2015-12-23 22:12:28

标签: c

*代码来自一本名为的书 用B编写的Byron gottfried *

*当我尝试输入一个字符时,程序停止*

Spinner spinner = (Spinner) dialog.findViewById(R.id.dlgSpinner);

1 个答案:

答案 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;
}