标签: printf

stdout/stderr消息的约定是什么?

我有一个应用程序,将fprintf提供帮助和错误消息stderr.

如果我stdout退出状态EXIT_SUCCESS(例如当我--help向我的应用程序发出选项时),我应该发送消息吗?

同样,我要不停地发送错误消息stderr的EXIT_FAILURE?

或者我应该发送所有帮助和错误消息stdout?

符合POSIX标准的UNIX应用程序的一般约定是什么?

c printf posix stdout stderr

3
推荐指数
1
解决办法
1264
查看次数

在Cuda 4.0编译错误中使用printf()

我有一个GTX 570(Fermi架构),它具有计算能力2.0.我的计算机上有Cuda 4.0版,我使用的是Ubuntu 10.10

使用Cuda 4.0,可以使用printf()内核.以下是Cuda 4.0 编程指南第125页的示例代码

#if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ < 200)
#define printf(f, ...) ((void)(f, __VA_ARGS__),0)
#endif


__global__ void helloCUDA(float f)
{
printf(“Hello thread %d, f=%f\n”, threadIdx.x, f);
}



void main()
{
helloCUDA<<<1, 5>>>(1.2345f);
cudaDeviceReset();
}
Run Code Online (Sandbox Code Playgroud)

我收到以下编译错误.

gaurish108 MyPractice: nvcc printf_inkernel.cu -o printf_inkernel
printf_inkernel.cu(10): error: unrecognized token

printf_inkernel.cu(10): error: expected an expression

printf_inkernel.cu(10): error: unrecognized token

printf_inkernel.cu(10): error: unrecognized token

printf_inkernel.cu(10): error: unrecognized token

printf_inkernel.cu(10): error: unrecognized token

printf_inkernel.cu(10): error: unrecognized token

printf_inkernel.cu(10): error: …
Run Code Online (Sandbox Code Playgroud)

printf cuda

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

printf和强制转换float参数

作为程序的一部分,我使用:

int ret = vprintf (format, args);
Run Code Online (Sandbox Code Playgroud)

在args我得到的堆栈,我不知道到底是什么,压入堆栈。格式是一个字符串,我可以阅读。

在我必须打印浮点数之前,以上方法一直有效。当我打印浮动时,我得到一些奇怪的数字...

我检查了是否调用float fArg = *(reinterpret_cast<const float*>(args)-然后打印fArg正确的值(当args仅由一个实际参数组成时,我尝试了它)

所以可能我需要特殊的"%...f"子格式行为-相应的(sub)参数应强制转换为float。(该...符号表示可以在之前添加精度,宽度等f)。如何实现?

c printf casting

3
推荐指数
1
解决办法
533
查看次数

如何对齐由ASCII字符组成的表中的数字

我想打印一个int double double double double double double由ASCII字符组成的表格中的字符串.有哪些方法可以使值与表头保持一致并确保它们不会"溢出"?

我的表头看起来像这样:

+---------+------+------+------+---------+---------+---------+
 NrCamere | smin   smax   smed |  pmin      pmax      pmed
+---------+------+------+------+---------+---------+---------+
Run Code Online (Sandbox Code Playgroud)

c printf

3
推荐指数
1
解决办法
1074
查看次数

在printf/sprintf中尾随零

我想使数字的输出总是有6位数

例如:

  • 如果number为1,则输出应为100000
  • 如果number为23,则输出应为230000
  • 如果number为236,则输出应为236000

我怎么能用printf/ sprintf?

c printf

3
推荐指数
1
解决办法
6820
查看次数

printf原始数据 - 获取printf或print以不发送字符

我有一个Xilinx Virtex-II Pro FPGA板,通过RS232连接到iRobot Create.

iRobot将字节整数流作为命令.

我发现printf实际上会通过串口发送(Hypterminal能够接收我打印的任何东西),并且我认为我可以使用printf将我的数据发送到iRobot.

问题是printf似乎格式化了ascii输出的数据,但我真的希望简单地发送数据raw.

我喜欢这样的东西:

printf(%x %x %x, 0x80, 0x88, 0x08);
Run Code Online (Sandbox Code Playgroud)

但是不是十六进制格式化,我希望它是发送的实际0x80值.

有任何想法吗?

c printf serial-port fpga serial-communication

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

printf()在while循环中的奇怪行为

有人可以解释一下为什么我看到while循环的printf()函数的双输入:

#include <ctype.h>
#include <stdio.h>

int main(){
    int x = 0;

    while ( x != 'q'){

    printf("\nEnter a letter:");

    x=getchar();
    printf("%c\n", x);
    if( isalpha(x) )
      printf( "You entered a letter of the alphabet\n" );
    if( isdigit(x) )
      printf( "You entered the digit %c\n", x);
    }   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Debian Squeeze(gcc版本4.4.5(Debian 4.4.5-8))中代码的输出是:

Enter a letter:1
1
You entered the digit 1

Enter a letter: // why is the first one appearing ???


Enter a letter:2
2
You entered the digit 2
Run Code Online (Sandbox Code Playgroud)

c printf while-loop getchar

3
推荐指数
1
解决办法
1847
查看次数

printf编译器优化?在堆栈中的gdb中找不到"%s"字符

当我的程序在gdb中被反汇编时,我可以看到buf的地址被压入堆栈,但是我没有看到格式字符串被压到它上面.这是什么原因?它是一个聪明的编译器优化?

我已经尝试编译一些printf语句的不同变体,看看我是否可以模仿"%s"字符串(或它的地址)没有被压入堆栈,但我无法做到.

这是程序代码:

int main(int argc, char **argv) {

    char buf[128];
    if(argc < 2) return 1;

    strcpy(buf, argv[1]);

    printf("%s\n", buf);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

用gcc 4.5.2编译,32位linux

compiler-construction printf gcc gdb

3
推荐指数
1
解决办法
383
查看次数

用printf组件打印新行

嗨,我正在尝试编写一些使用printf打印给定字符串的汇编代码.我在.data部分中使用之前声明我的字符串,测试示例如下所示:

extern printf
extern fflush

LINUX        equ     80H      ; interupt number for entering Linux kernel
EXIT         equ     60       ; Linux system call 1 i.e. exit ()

section .data
    outputstringfmt: db "%s", 0
    sentence0: db "Hello\nWorld\n", 0


segment .text
    global  main


main:
    mov r8, sentence0
    push r8
    call print_sentence
    add rsp, 8
    call os_return

print_sentence:
    push rbp
    mov rbp, rsp
    push r12
    mov r12, [rbp + 16]
    push rsi
    push rdi
    push r8
    push r9
    push r10
    mov rsi, r12
    mov …
Run Code Online (Sandbox Code Playgroud)

assembly printf gcc newline nasm

3
推荐指数
1
解决办法
6495
查看次数

thrust :: device_reference不能和printf一起使用?

我正在使用推力分区功能将数组划分为偶数和奇数.但是,当我尝试显示设备矢量时,它会显示随机值.请告诉我错误在哪里.我想我做的一切都是正确的.

#include<stdio.h>
#include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include<thrust/partition.h>

struct is_even
  {
      //const int toCom;
      //is_even(int val):toCom(val){}
    __device__
    bool operator()(const int &x)
    {
      return x%2;
    }
  };

void main(){


    thrust::host_vector<int> H(6);
    for(int i =0 ; i<H.size();i++){
        H[i] = i+1;
    }
    thrust::device_vector<int> D = H;
    thrust::partition(D.begin(),D.end(),is_even());
    for(int i =0 ;i< D.size();i++){
        printf("%d,",D[i]);
    }


    getchar();

}
Run Code Online (Sandbox Code Playgroud)

printf cuda nvidia thrust

3
推荐指数
1
解决办法
443
查看次数