标签: printf

解释printf中的评估顺序

main()
{
    int i=5;
    printf("%d%d%d%d%d%d",i++,i--,++i,--i,i);
}
Run Code Online (Sandbox Code Playgroud)

输出是45545,但我不知道它是如何工作的.有人说函数调用中的参数从左到右被压入堆栈.

c printf

5
推荐指数
2
解决办法
1万
查看次数

需要在python中找到print或printf的源代码

我正在研究一些我无法完全谈论的事情.我只能说我是信息安全和计算机科学的学生.

我只需要在python中更改一些深层次的源代码.现在,我特意想更改内置打印功能中的源代码.不幸的是,我找不到它定义在python源代码文件中的任何位置.

有什么想法吗?

非常感谢.

编辑:具体的问题是询问Python中的打印功能是否可以被其他东西覆盖.这是为了在Python解释器中植入后门.

python printing printf

5
推荐指数
1
解决办法
4438
查看次数

pthread:一个printf语句在子线程中打印两次

这是我的第一个pthread程序,我不知道为什么printf语句在子线程中打印两次:

int x = 1;

void *func(void *p)
{
    x = x + 1;
    printf("tid %ld: x is %d\n", pthread_self(), x);
    return NULL;
}

int main(void)
{
    pthread_t tid;
    pthread_create(&tid, NULL, func, NULL);

    printf("main thread: %ld\n", pthread_self());

    func(NULL);
}
Run Code Online (Sandbox Code Playgroud)

在我的平台上观察到的输出(Linux 3.2.0-32-generic#51-Ubuntu SMP x86_64 GNU/Linux):

1.
main thread: 140144423188224
tid 140144423188224: x is 2

2.
main thread: 140144423188224
tid 140144423188224: x is 3

3.
main thread: 139716926285568
tid 139716926285568: x is 2
tid 139716918028032: x is 3
tid 139716918028032: x is …
Run Code Online (Sandbox Code Playgroud)

printf pthreads

5
推荐指数
1
解决办法
2930
查看次数

constexpr"[v [n]] sprintf"可能吗?

我的直觉答案是肯定的,实现也可以由"printf"使用.对于用户定义的类型,可能很容易超载.

有没有人曾尝试过这个?

c++ printf

5
推荐指数
1
解决办法
678
查看次数

如何用相同的模式和标志打开fdopen?

我想要一个FILE*类型使用fprintf.我需要用来fdopen获得一个FILE*而不是open那个返回一个int.但是,我们可以做同样的fdopen和open?(我从未使用过fdopen)

我想这样做fdopen:

open("my_file", 0_CREAT | O_RDWR | O_TRUNC, 0644);
Run Code Online (Sandbox Code Playgroud)

c file-io printf fdopen

5
推荐指数
2
解决办法
2万
查看次数

C科学符号指数格式

是否可以控制printf的科学记法(e)打印的指数中显示的位数?

这段代码

#include <stdio.h>

int main(void) {
    printf("%6.3e", 403.0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产生(取决于编译器/平台):

4.030e+002(VS2010)或4.030e+02(gcc 4.3.4)或甚至4.030e+2

在比较不同平台上生成的文件时,指数中不同的位数很容易混淆diff工具.

c printf

5
推荐指数
1
解决办法
2341
查看次数

尝试打印大于等于10的数字时出现STM32硬故障

临时解决方法

我使用微小的printf解决了这个问题:

可能newlib printf占用了太多内存。此后,PC会更改一些奇怪的东西,从理论上讲,这应该是数组的结尾char[100]。

cp = buf + BUF
Run Code Online (Sandbox Code Playgroud)

稍后它尝试执行

*--cp = something
Run Code Online (Sandbox Code Playgroud)

它崩溃了。内存错误?有很多我不理解的事情。例如,我不确定链接描述文件是否正确,或者syscall函数是否正确。在获得进一步的了解之前,我必须坚持使用小巧的printf。


原版的

我有一个STM32F103RB板(Nucleo),而USART1才可以工作。另外,我测试了Newlib函数,并按puts()预期工作。但是,当我尝试printf()用于整数时,如下所示:

printf("ADC: %d\r\n", test);
Run Code Online (Sandbox Code Playgroud)

如果test < 10程序正常运行,但是test >= 10产生了严重故障。经过一些GDB调试后,我发现它是从vfprintf生成的:

#0  HardFault_Handler () at main.c:136
#1  <signal handler called>
#2  0x08005af4 in _vfprintf_r (data=<optimized out>, fp=0x20000384 <impure_data+852>, fmt0=fmt0@entry=0x20004f57 " \254\264", ap=...,
    ap@entry=...) at ../../../../../../newlib/libc/stdio/vfprintf.c:1601
#3  0x08004fd0 in printf (fmt=0x800b4ac "ADC: %d\n\r") at ../../../../../../newlib/libc/stdio/printf.c:52
#4  0x080004e8 in main () at main.c:168
Run Code Online (Sandbox Code Playgroud)

我想不出任何解决方案。这是我的_sbrk():

caddr_t …
Run Code Online (Sandbox Code Playgroud)

printf arm cortex-m3 stm32 newlib

5
推荐指数
1
解决办法
4041
查看次数

将$插入格式化的float java中

我正在尝试格式化浮点数在数字前面有一个美元符号.目前我正试图从左侧打印150个空格.

System.out.printf("%150.2f", orderTotal);

这就是我正在使用的但我无法弄清楚在哪里放$我想我可以把整个东西变成一个字符串,但我想知道是否有办法做我正在寻找的东西?

java formatting printf

5
推荐指数
1
解决办法
85
查看次数

为Vec <T>实现fmt :: Display

我想实现fmt::Display我的代码中常用的嵌套结构.

// The root structure
pub struct WhisperFile<'a> {
    pub path: &'a str,
    pub handle: RefCell<File>,
    pub header: Header
}

pub struct Header{
    pub metadata: metadata::Metadata,
    pub archive_infos: Vec<archive_info::ArchiveInfo>
}

pub struct Metadata {
   // SNIP
}

pub struct ArchiveInfo {
   // SNIP
}
Run Code Online (Sandbox Code Playgroud)

如您所见,这是一个非平凡的数据树.当呈现为一行时,该archive_infos属性Header可以很长.

我想发布一些东西

WhisperFile ({PATH})
  Metadata
    ...
  ArchiveInfo (0)
    ...
  ArchiveInfo (N)
    ...
Run Code Online (Sandbox Code Playgroud)

但是当我尝试显示时,Vec<ArchiveInfo>我得到的显示没有实现.我可以实现fmt::Display,ArchiveInfo但这还不够,因为fmt::Display没有为父容器实现Vec.如果我实现FMT ::显示collections::vec::Vec<ArchiveInfo>我得到the impl does not …

printf traits rust

5
推荐指数
1
解决办法
1305
查看次数

如何阻止fprintf在Windows中与\n一起打印到文件

当我使用fprintf:

fprintf(somefile,"%c",'\n');
Run Code Online (Sandbox Code Playgroud)

它将"\ r \n"打印到文件中.我如何打印'\n'?
我正在写一个二进制文件.上面的代码仅用于调试.

c windows printf line-endings

5
推荐指数
1
解决办法
344
查看次数

标签 统计

printf ×10

c ×4

arm ×1

c++ ×1

cortex-m3 ×1

fdopen ×1

file-io ×1

formatting ×1

java ×1

line-endings ×1

newlib ×1

printing ×1

pthreads ×1

python ×1

rust ×1

stm32 ×1

traits ×1

windows ×1