printf()奇怪的结果是C

时间:2016-09-13 10:40:27

标签: c

在这里,我的代码在在线 geeksforgeeks 编译器中给出了奇怪的结果。

{ "1":[ {"id":"171113524", "title":"xxxx", "category":"4",
    { 1:[ {id:"171113524", title:"xxxx", category:"4",
     start:"20160913062500", stop:"20160913093000"} , {id:"171115415",
     title:"xxxx", category:"1",
     start:"20160913093000", stop:"20160913100000"} , {id:"171115421",
     title:"xxxx", category:"2", start:"20160913100000",
     stop:"20160913104702"} , {id:"171115471", title:"xxxx
     ", category:"6", start:"20160913104702",
     stop:"20160913110000"} , {id:"17111049", title:"xxxx",
     category:"4", start:"20160913110000", stop:"20160913110500"} ,
     {id:"17111335", title:"xxxx", category:"4",
     start:"20160913110500", stop:"20160913111200"} , {id:"17111354",
     title:"xxxx", category:"4",
     start:"20160913111200", stop:"20160913111900"} 

输出 $.ajax({ url: "http://domain/corsproxy?url=http://json.json/json.json", type: "GET", timeout: 3000, dataType: "json", success: function(parse) { var strHtml = ''; $.each(parse, function(key, value) { strHtml += ' <span class="location">' + value.title + '</span><br />'; }); document.getElementById("results").innerHTML = strHtml; }, error: function(jqXHR, exception) { console.log(jqXHR); } });

但我认为正确的输出#include <stdio.h> main() { printf("\nhai\bas\rha\n"); }

在线编辑器墨水:http://code.geeksforgeeks.org/paWwuv

为什么编译器输出错误?请帮帮我。

4 个答案:

答案 0 :(得分:2)

在线编译器打印到html页面,而不是控制台。浏览器显示的\b与终端窗口的显示方式不同。

如果您在在线编译器中运行代码,然后查看页面源,您可以看到您打印的所有字符都在那里。

答案 1 :(得分:1)

这不是编译器错误。我会怪你的终端。这是我在debian机器上的输出:

$ make so
cc     so.c   -o so
$ ./so 

haas

为了确保程序实际发出您期望的charcode,您可以将输出通过管道传输到xxd

此外,如果您不返回任何内容,则main函数应为void。如果没有使用类型限定符(我觉得很难看),则假定返回int类型。

答案 2 :(得分:1)

&#34;正确&#34;在这种情况下,输出为\nhai\bas\rha\n,与您提供给printf完全相同,\n\b\r代表相应的特殊字符(或字符)组合)。

但是此输出在特定输出设备上的外观取决于该设备的属性和功能。恰好,在线编译器使用(模拟)的输出设备会将该序列显示为haiasha

您的期望似乎是基于&#34;典型&#34;的行为。显示终端。同时,在线编辑器不会直接向任何&#34;显示&#34;输出任何内容。它们拦截标准输出,然后对其进行后处理,以便在网页上进行表示。你看到的是后处理的结果。

答案 3 :(得分:0)

\b是一个特殊角色。终端通常将其解释为&#34;将插入符号向左移动一个字符&#34;。因此,下一个打印字符将覆盖\b之前打印的最后一个字符。

但是,在其他情况下,\b字符可能以不同的方式解释。例如,在文件中,它只是一个常规字节(值为8)。