标签: printf

如何在Linux上获得等效的printf_l?

此功能在OS X上存在,并允许您将自定义本地传递给该功能。setlocale不是线程安全的,因此按参数传递语言环境是安全的。

如果没有等效项,则可以使用任何与语言环境无关的方法printf或仅用于双精度(%g)的printf。

c++ printf locale thread-safety

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

在延迟之前的printf在C中不起作用

有没有人知道为什么如果我在延迟之前放一个printf,它等到延迟完成才打印出de消息?

Code1 with sleep():

int main (void)
{
    printf ("hi world");
    system("sleep 3");    
}
Run Code Online (Sandbox Code Playgroud)

具有自实现延迟的Code2:

void delay(float sec)
{
    time_t start;
    time_t current;
    time(&start);
    do{
        time(&current);
    }while(difftime(current,start) < sec);
}
int main (void)
{
    printf ("hi world");
    delay(3);    
}
Run Code Online (Sandbox Code Playgroud)

而如果:

printf ("hi world");
delay(3);    
printf ("hi world");
delay(3);    
Run Code Online (Sandbox Code Playgroud)

它等到睡眠总和,然后它同时打印消息

为什么会这样?

更新:当我呼叫延迟时,我写了延迟("睡眠3"),我的意思是延迟(3).更正

c printf

5
推荐指数
3
解决办法
4779
查看次数

C++ printf std :: vector

我如何在C++中做这样的事情:

void my_print(format_string) {
   vector<string> data;
   //Fills vector
   printf(format_string, data);
}

my_print("%1$s - %2$s - %3$s");
my_print("%3$s - %2$s);
Run Code Online (Sandbox Code Playgroud)

我之前没有解释过.格式字符串由应用程序用户输入.

在C#中,这有效:

void my_print(format_string) {
 List<string> data = new List<string>();
 //Fills list
 Console.WriteLine(format_string, data.ToArray);
}

my_print("{0} - {1} - {2}");
my_print("{2} - {1}");
Run Code Online (Sandbox Code Playgroud)

c++ printf vector

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

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

如果使用valgrind启动,信号处理程序中的snprintf会创建分段错误

这个非常简单的c程序在使用valgrind运行时会给我一个分段错误.它开始正常时运行良好.将USR1信号发送到进程时会崩溃.

问题似乎是printf处理浮点值格式化的方式,因为如果使用字符串(%s)或int(%d)格式参数,它可以正常工作.

PS我知道你不应该在信号处理程序中调用任何printf系列函数,但仍然为什么它只与valgrind崩溃.

    #include <stdio.h>
    #include <signal.h>

    void sig_usr1(int sig) {
            char buf[128];
            snprintf(buf, sizeof(buf), "%f", 1.0);
    }

    int main(int argc, char **argv) {
            (void) signal(SIGUSR1, sig_usr1);
            while(1);
    }
Run Code Online (Sandbox Code Playgroud)

c printf valgrind segmentation-fault

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

输出float和double变量时sprintf输出的最大字符数是多少?

如果我这样做:

void printfloat(float number)
{
    printf("%f", number);
}
Run Code Online (Sandbox Code Playgroud)

和

void printdouble(double number)
{
    printf("%f", number);
}
Run Code Online (Sandbox Code Playgroud)

每个函数可以输出的最大字符数是多少?

c printf

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

printf("%i")和printf("%d")之间有什么区别

可能重复:
printf中格式说明符%i和%d之间的差异

我只是检查了引用,它说它们都表示有符号整数.我认为必须有一些区别

c printf

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

Printf没有参数解释

据我所知,如果printf没有参数,它会输出一个意外的值.

例:

#include <stdio.h>

int main() {
    int test = 4 * 4

    printf("The answer is: %d\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这将返回一个随机数.在使用不同格式(如%p,%x等)后,它不会打印16(因为我没有将变量添加到参数部分)我想知道的是,这些值在哪里被采用从?它是堆栈的顶部吗?每次编译时都不是新值,这很奇怪,就像一个固定的值.

c printf

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

在x86中调用printf来打印整数

我试图调用printf来打印一个整数,把它打不到正确的值:

section .data

         an:    db 1
         format: db "num: %d" , 10, 0

section .text
         global main
         extern printf

main:
         push ebp
         mov ebp,esp

         mov eax, [an]
         push eax
         push dword format
         call printf

         add esp, 8
         mov esp,ebp
         pop ebp

         mov eax, 0
         ret
Run Code Online (Sandbox Code Playgroud)

此代码打印"num:1836412417"

当我尝试打印一个它有效的字符时!

section .data

         an:    db 'a'
         format: db "num: %c" , 10, 0

section .text
         global main
         extern printf

main:
         push ebp
         mov ebp,esp

         mov eax, [an]
         push eax
         push dword format
         call printf …
Run Code Online (Sandbox Code Playgroud)

x86 assembly printf call nasm

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

为什么printf字面打印(null)以及究竟发生了什么?

在C编程练习中,我正在做这样的事情(只是简化):

printf( "%s", 0);
Run Code Online (Sandbox Code Playgroud)

输出是

(null)
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我假设printf将零解释为a char *,那么NULL?我怎么能用这样的东西复制这个结果

char string[] = NULL; //compiler-error
printf( "%s", string);
Run Code Online (Sandbox Code Playgroud)

?

c printf format-specifiers

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