C程序显示顺序

时间:2015-01-26 04:42:36

标签: c

当我运行下面的代码时,它会在第4行最后一行运行系统命令,然后再显示字符串'proceeding'!我想知道为什么以及如何修复它,任何想法?

if ((strlen(command)>0) && (command[strlen (command) - 1] == '\n'))      
    command[strlen (command) - 1] = '\0';                               
    printf("proceeding");                  // <-- the string
    strcat(command,contents); 
    strcat(command,subject);
    system(command);                       // <-- offending system command
    sleep (1);
    printf("\n ----- Search complete for: [%s]",command);
    getchar();

当然有变量如'command'和'subject'在上面的代码之外被操作和声明,所以如果你需要上下文,我将发布下面的其余源代码。

4 个答案:

答案 0 :(得分:2)

拉链并冲洗:

printf("proceeding"); 

fflush(stdout);

那将冲洗缓冲区中的东西(碗!)

执行系统命令之前。

答案 1 :(得分:1)

尝试在printf中添加'\ n'。

强制刷新printf缓冲区。否则,printf不必立即打印传递的参数。你可以谷歌冲洗缓冲后者

答案 2 :(得分:0)

stdout is line buffered,所以它只会在到达换行符后显示缓冲区中的内容

printf("proceeding");更改为printf("proceeding\n");或使用stdout同步fflush(stdout);即可完成工作。

答案 3 :(得分:0)

默认情况下,stdio stdout流是线路或完全缓冲的。要设置 unbuffered (并且为了避免在每次输出操作后都要编写fflush(stdout)),请使用setvbuf中声明的ISO C stdio.h函数:

setvbuf(stdout, (char *)NULL, _IONBF, 0);
在进行第一次I / O之前