c - 程序运行后没有输出?

标签 c input output executable

我很困惑为什么我的程序运行不好。我使用 PuTTY 通过 Windows PC 连接到服务器。它总是工作得很好,但我相信发生了一些奇怪的事情。 这是identify.c的代码:

#include <stdio.h>
#include <ctype.h>

int main()
{
    while(1)
    {
        char word[256];
        int i;
        int validity = 1;

        scanf("%s", word);

        for(i=0; word[i]!='\0'; i++)
        {
            if(i == 0)
            {
                /* First character should only be underscore or a letter */
                if(word[i]!= '_' && !isalpha(word[i]))
                {
                    validity = 0;
                    break;
                }

            }
            else
            {
                /* Rest can be Alpha-numerics or underscore */
                if(word[i]!= '_' && !isalnum(word[i]))
                {
                    validity = 0;
                    break;
                }
            }

        }

        if(validity)
            printf("valid\n");
        else
            printf("invalid\n");
    }

    return 0;
}

这是用于测试名称是否是可能的标识符名称的输入文件。身份测试.txt:

name

name2

2name

_name

__name

na_me

@name

na-me

然后,我使用 FileZilla 将这两个文件上传到我的服务器。

然后,我执行以下命令以使 recognize.c 可执行:

gcc identify.c -o identify

可执行文件已创建。 然后我运行以下命令:

identify <identifytest.txt >output.txt

创建的output.txt是空的。

有什么想法吗?在过去的两天里我一直为此疯狂,不明白发生了什么。

最佳答案

当 std 输入关闭时,您必须打破无限循环:

if (scanf("%s", word) == EOF) break;

您还可以刷新标准输出以强制将结果写入输出文件:

fflush(stdout);

关于c - 程序运行后没有输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30404936/

相关文章:

c - 为什么我的程序会跳过 switch 指令?

c - ANSI C - 数字矩阵的输入

python - 值错误: could not convert string to float: '8/3'

c - 使用 atoi 函数从命令行输入

c - strptime 不适用于时区格式说明符

c - 函数 C 中的未知结构错误 - Linux

php - 在循环内使用 PHP/AJAX 更新/设置 MySQL

c - 如何使用 write() 代替 printf()

netbeans - 带有ansicodes的netbeans控制台中的彩色输出

c - 使用 scanf() 获取的整数在 C 中未获得其预期值