Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        3年前关闭。
                                                                                            
                
        
我想在控制台中打印两个字符串

int k = 3;
for (int i = 0; i < k; i++)
{
    printf("\ra: %d\n\rb: %d", i*2, i*3);
}


我想得到这个结果:

a: 4
b: 6


但是我得到:

a: 0
a: 2
a: 4
b: 6

最佳答案

之所以要得到该输出,是因为您在a之前只有一个\r,但是在其中a和b之间只有\n\r

printf("\ra: %d\n\rb: %d", i*2, i*3);


在每个循环中,光标返回到b所在的行的开头,并用新的a值覆盖OVER:

1st    2nd     3rd run
a=0    a=0    a=0
b=0    a=2    a=2
       b=3    a=4
              b=6


由于速度很快,因此您只能看到最后一个。确实不清楚要执行的操作,但是如果仅需要最后一次运行的输出,则可以在循环之后编写printf:

for (int i = 0; i < k; i++)
{
...
}
printf("\r\na: %d\n\rb: %d", i*2, i*3);

关于c - 打印两个字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39337015/

10-12 19:53