标签: printf

如何在C++中打印出BST

我的C++程序创建了一个二叉搜索树.我知道如何在预订,后订单和有序中打印出值.

但是,我想做一些更困难的事情.如果有人在纸上画树,我想以他们看的方式打印出值.它的根部位于顶部的中心,它的左下方是儿童的左下方,而右下方是正确的儿童.其余的节点将相应地绘制.

我怎样才能做到这一点?

c++ printf binary-tree nodes

4
推荐指数
1
解决办法
4656
查看次数

用printf正确辩护

我有一本字典,键和值都是字符串.我想打印每个键值对在它自己的行上,键左对齐,值右对齐.

Key1        Test
Key2    BlahBlah
Run Code Online (Sandbox Code Playgroud)

等等...

在PHP中执行此操作的最佳方法是什么?也许是一个聪明的方法与printf?

php printf

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

_vscprintf相当于Android?

_vscprintf在Android上不可用.也vsprintf(NULL, fmt, ap)不起作用(产生seg故障),所以似乎无法计算vsnprintf成功所需的缓冲区大小?

Android 源代码表明__android_log_print函数只是使用vsnprintf将字符串截断为1024 ...

你如何处理这种情况?

c printf android android-ndk

4
推荐指数
1
解决办法
3687
查看次数

C#相当于fprintf

我一直在将一些代码从C++转换为C#.我对C#API缺乏了解并不能让我找到相当于fprintf的东西.我基本上要做的是编写一个帮助类来将信息记录到文件中.到目前为止,我已经定义了以下类.如果有人看到不寻常的东西,请告诉我."Log"方法目前仅记录字符串.我不知道这是否是最好的方法.无论如何,我想将一些数字转换为转储到日志文件中.在C++中,我有fprintf进行转换.我怎样才能在C#中实现类似的东西?

fprintf(file, "Wheel1: %f \t Wheel2: %f \t Dist: %f, Wheel0, Wheel1, TotalDist);
Run Code Online (Sandbox Code Playgroud)
public class Logger
{
    private string strPathName = string.Empty;
    private StreamWriter sw = null;

    /// <summary>
    /// Constructor
    /// </summary>
    /// <param name="prefix"></param>
    public Logger(string prefix)
    {
        DateTime datet = DateTime.Now;

        // Format string
        if (string.IsNullOrEmpty(prefix))
        {
            prefix += "_";
        }
        else
        {
            prefix = "";
        }

        strPathName = "Log_" + prefix + datet.ToString("MM_dd_hhmmss") + ".log";
        if (File.Exists(strPathName) == true)
        {
            FileStream fs = new FileStream(strPathName, FileMode.OpenOrCreate, …
Run Code Online (Sandbox Code Playgroud)

c# printf class equivalent

4
推荐指数
1
解决办法
5179
查看次数

Bash printf%q无效指令

我想在.bashrc文件中更改我的PS1.我找到了一个使用带有%q指令的printf来转义字符的脚本:

#!/bin/bash
STR=$(printf "%q" "PS1=\u@\h:\w\$ ")
sed -i '/PS1/c\'"$STR" ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

问题是我收到此错误:

script.sh: 2: printf: %q: invalid directive
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?也许另一种逃避角色的方法?

linux bash printf sed ps1

4
推荐指数
1
解决办法
3840
查看次数

与cout和printf的区别在于c ++中的多线程

一些背景:

我有一个使用pthreads多线程的c ++程序.该计划是一个酒店预订系统,有10位客人(每个人都有自己的主题),一个登记台(1个主题)和一个退房服务台(1个主题).酒店只有5间客房可供客人入住.我正在使用信号量在此计划中强制执行互斥和事件订购.

题:

这是我的代码(只是需要的部分......)

sem_init(&openRooms, 0, 5);

sem_wait(&openRooms);   //waits for there to be an open room at the hotel

cout << "Guest " << guestNumber << " waits for check-in." << endl;

sem_wait(&checkInLine); //waits for an open spot at the check-in desk
Run Code Online (Sandbox Code Playgroud)

有5位客人可以同时入住酒店,因为这里有5间客房.当我运行程序时,我得到输出(或类似......)

Guest Guest Guest Guest 24 waits for check-in. waits for check-in.1 waits for check-in. 
3 waits for check-in.
Run Code Online (Sandbox Code Playgroud)

似乎cout允许同时运行多个打印,这就是"Guest"连续多次打印的原因.

我试过用printf做这个,同样的问题不会发生.在另一个线程可以打印语句之前打印整个语句.

sem_wait(&checkInSt); //Only one person at check in receptionist at a time
printf("Guest %ld goes to the …
Run Code Online (Sandbox Code Playgroud)

c++ printf multithreading semaphore cout

4
推荐指数
1
解决办法
1892
查看次数

printf()的字符串宽度是否安全,没有未终止的字符串?

以下是否定义明确?

const char not_a_c_string[] = { 'h', 'e', 'l', 'l', 'o' };
printf( "%.5s", (const char*) not_a_c_string );
Run Code Online (Sandbox Code Playgroud)

这是关于具体形式的问题"%.5s",而不是如何打印可能不是NUL终止的字符串?因为这个问题已在这里得到解答,其中"%.*s"提出了构造.

c printf undefined-behavior language-lawyer

4
推荐指数
1
解决办法
693
查看次数

printf redifines UINT32_MAX

码:

#include <stdio.h>
#include <stdint.h>

int main(int argc, char *argv[]) {
    printf("%lu\n%lu\n%lu\n%lu\n%lu\n%lu\n%lu\n",
        UINT32_MAX,
        UINT32_MAX,
        UINT32_MAX,
        UINT32_MAX,
        UINT32_MAX,
        UINT32_MAX,
        UINT32_MAX);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

4294967295
4294967295
4294967295
4294967295
4294967295
18446744073709551615
18446744073709551615
Run Code Online (Sandbox Code Playgroud)

bug还是故意的?为什么?我认为它说明了一切,但接口需要我添加更多的行才能发布它(为了更少的文本来解决很多代码)

c printf

4
推荐指数
1
解决办法
487
查看次数

根据变量的值更改printf()中的文本

我很久没有做过C而慢慢回到它身上.我做了一个小游戏,现在正在进行"修复错误"并在这里和那里进行奇怪的调整.如果printf()关于转弯的陈述中的文字,我有一个问题......

printf("CONGRATULATIONS!!\nYou won with %d turns remaining\n",turns);
Run Code Online (Sandbox Code Playgroud)

现在这很棒,直到turns==1.

是否有一种有效的方法可以根据turn变量的条件更改文本'turn'?或者我是否必须使用if语句(我已经有一个解决方案,但我确信有更好的解决方案!)

if (turns==1)
{
  printf("CONGRATULATIONS!!\nYou won with %d turn remaining\n",turns);
}
else
{
  printf("CONGRATULATIONS!!\nYou won with %d turns remaining\n",turns);
}
Run Code Online (Sandbox Code Playgroud)

对不起真正的'noob'问题,但我坚持认为这是最有效的方法.

c printf

4
推荐指数
1
解决办法
95
查看次数

将系统调用与linux上的printf混合使用

我在汇编调用c函数时做了一些测试,当我使用ansi转义代码并调用使用printf的ac函数时,我得到了我认为的奇怪行为.

这是装配部分:

section .data               

    red db 27,"[31;1m",0
    redlen equ $ - red

    cyan db 27,"[36;1m",0
    cyanlen equ $ - cyan

    colorReset db 27,"[0m",0
    colorResetLen equ $ - colorReset

section .text

extern printLetter
extern letter

global main

main:
        mov  BYTE [letter], 'H'
        call ansiSetRed
        call printLetter
        mov  BYTE [letter], 'e'
        call ansiSetCyan
        call printLetter
        mov  BYTE [letter], 'l'
        call ansiReset
        call printLetter
        mov  BYTE [letter], 'l'
        call ansiSetRed
        call printLetter
        mov  BYTE [letter], 'o'
        call ansiSetCyan
        call printLetter
        mov  BYTE [letter], …
Run Code Online (Sandbox Code Playgroud)

c linux assembly printf x86-64

4
推荐指数
1
解决办法
628
查看次数