Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows上编译的C程序提供各种输出_C_Windows - Fatal编程技术网

在Windows上编译的C程序提供各种输出

在Windows上编译的C程序提供各种输出,c,windows,C,Windows,我开始怀疑这不仅仅是我的代码,我也不明白为什么我的代码的输出会如此多变。它有时会打印一些行,有时则不会打印任何内容 我觉得这很奇怪,于是开始从中提取代码,果然,我仍然会遇到这种奇怪的意外行为,程序并不总是打印出来 我从K&R C的书中拿了一个例子。这是一个你试图模仿尾巴的练习。然而,当我编译下面的代码并运行它时,输出会发生变化,即使每次我都使用相同的输入。 我专门运行了以下代码: #include <stdio.h> #include <stdlib.h> #defin

我开始怀疑这不仅仅是我的代码,我也不明白为什么我的代码的输出会如此多变。它有时会打印一些行,有时则不会打印任何内容

我觉得这很奇怪,于是开始从中提取代码,果然,我仍然会遇到这种奇怪的意外行为,程序并不总是打印出来

我从K&R C的书中拿了一个例子。这是一个你试图模仿尾巴的练习。然而,当我编译下面的代码并运行它时,输出会发生变化,即使每次我都使用相同的输入。 我专门运行了以下代码:

#include <stdio.h>
#include <stdlib.h>

#define MAXLINES        1024
#define MAXINPUT        10240
#define DEF_NUM_LINES   10

int  getlines   (char *);
void parse_args (int, char **);

char  linestr[MAXINPUT];
char *lineptr[MAXLINES];

int num_of_lines = DEF_NUM_LINES;

int main (int argc, char *argv[])
{
        int lines;
        int ltp = 0;
        int i; int c;

        *lineptr = linestr;

        /* Parse the argument strings passed to the program */
        if (argc > 1) {
                parse_args(argc, argv);
        }

        /* Get the input from the user */
        lines = getlines(linestr);

        if (num_of_lines == 0) {
                num_of_lines = 10;
        }

        ltp = lines < num_of_lines ? lines : num_of_lines;
        printf ("\n>>> Printing %d line(s):\n", ltp);
        if (ltp == DEF_NUM_LINES) {
                printf (">>> The default number of lines to print is ");
                printf ("%d\n", DEF_NUM_LINES);
        }
        printf ("\n");

        for (i = lines; i > 0; i--) {
                while ((c = *lineptr[0]++) != '\n') {
                        if (i <= ltp) {
                                printf ("%c", c);
                        }
                }
                if (c == '\n' && i <= ltp) {
                        printf ("\n");
                }
        }

        return 0;
}

int getlines (char *buffer)
{
        int i, count = 0;
        char c;

        for (i = 0; (c = getchar()) != EOF && i < MAXINPUT; i++) {
                *buffer++ = c;
                if (c == '\n') {
                        lineptr[++count] = buffer;
                }

        }
        *buffer++ = '\0';

        return count;
}

void parse_args (int argc, char **argv)
{
        char c;

        while (--argc > 0 && (*++argv)[0] == '-') {
                c = *++argv[0];
                switch (c) {
                case 'n':
                        num_of_lines = atoi(*(argv + 1));
                        break;
                }
        }
}
#包括
#包括
#定义最大线1024
#定义MAXINPUT 10240
#定义定义数量行10
int getlines(字符*);
void parse_args(int,char**);
char linestr[MAXINPUT];
字符*lineptr[MAXLINES];
int num_of_line=DEF_num_line;
int main(int argc,char*argv[])
{
内线;
int-ltp=0;
int i;int c;
*lineptr=linestr;
/*解析传递给程序的参数字符串*/
如果(argc>1){
parse_args(argc,argv);
}
/*从用户那里获取输入*/
lines=getlines(linestr);
if(行数==0){
_行的数量=10;
}
ltp=行数<行数?行数:行数;
printf(“\n>>>打印%d行):\n”,ltp);
如果(ltp==DEF_NUM_行){
printf(“>>>要打印的默认行数为”);
printf(“%d\n”,DEF_NUM_行);
}
printf(“\n”);
对于(i=行;i>0;i--){
而((c=*lineptr[0]+)!='\n'){

如果(i)你是如何中断输入行的?尝试将输入写入文本文件并调用
tail3-n4
。该程序适合我(linux和win7 cmd)你的输入到底是什么?123…意思是按Enter键,意思是按Ctrl+Z键。奇怪的是,没有回音。如果我这样做,我会在我的Windows 10上的屏幕上看到
^Z
,它在cmd控制台上正常工作,但与powershell控制台不同,显然它与powershell有关。