我的C++程序创建了一个二叉搜索树.我知道如何在预订,后订单和有序中打印出值.
但是,我想做一些更困难的事情.如果有人在纸上画树,我想以他们看的方式打印出值.它的根部位于顶部的中心,它的左下方是儿童的左下方,而右下方是正确的儿童.其余的节点将相应地绘制.
我怎样才能做到这一点?
我有一本字典,键和值都是字符串.我想打印每个键值对在它自己的行上,键左对齐,值右对齐.
Key1 Test
Key2 BlahBlah
Run Code Online (Sandbox Code Playgroud)
等等...
在PHP中执行此操作的最佳方法是什么?也许是一个聪明的方法与printf?
_vscprintf在Android上不可用.也vsprintf(NULL, fmt, ap)不起作用(产生seg故障),所以似乎无法计算vsnprintf成功所需的缓冲区大小?
Android 源代码表明__android_log_print函数只是使用vsnprintf将字符串截断为1024 ...
你如何处理这种情况?
我一直在将一些代码从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) 我想在.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)
任何的想法 ?也许另一种逃避角色的方法?
一些背景:
我有一个使用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) 以下是否定义明确?
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"提出了构造.
码:
#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()关于转弯的陈述中的文字,我有一个问题......
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函数时做了一些测试,当我使用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)