标签: printf

寻找反转sprintf()函数输出的算法

我正在开发一个需要解析日志文件的项目.我正在寻找一个快速的算法,将采取像这样的组消息:

P1的温度为35°F.

P1的温度为40°F.

P3的温度为35F.

记录器停了下来.

记录器开始了.

P1的温度为40°F.

并以printf()的形式提出一些东西:

"The temperature at P%d is %dF.", Int1, Int2" 
{(1,35), (1, 40), (3, 35), (1,40)}
Run Code Online (Sandbox Code Playgroud)

该算法需要足够通用以识别消息组中的几乎任何数据负载.

我尝试搜索这种技术,但我甚至不知道要搜索的正确术语.

algorithm logging printf parsing normalizing

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

为什么NSString和NSLog似乎以不同方式处理%C和%lc(以及%S和%ls)?

Apple的字符串格式说明符记录了声明,

NSString格式化方法和CFString格式化函数支持的格式说明符遵循IEEE printf规范 ; ...您也可以将这些格式说明符与NSLog函数一起使用.

但是,尽管printf规范定义%C作为等同于%lc和%S作为等同于%ls只%C和%S看起来与正常工作NSLog和+[NSString stringWithFormat:].

例如,请考虑以下代码:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    unichar str[3];
    str[0] = 63743;
    str[1] = 33;
    str[2] = (unichar)NULL;

    NSLog(@"NSLog");
    NSLog(@"%%S:  %S", str);
    NSLog(@"%%ls: %ls", str);

    NSLog(@"%%C:  %C", str[0]);
    NSLog(@"%%lc: %lc", str[0]);

    NSLog(@"\n");
    NSLog(@"+[NSString stringWithFormat:]");

    NSLog(@"%%S:  %@", [NSString stringWithFormat:@"%S", str]);
    NSLog(@"%%ls: …
Run Code Online (Sandbox Code Playgroud)

unicode formatting cocoa printf

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

为什么Perl的sprintf不能正确舍入浮点数?

我一直在寻找Perl内置函数sprintf使用的舍入约定.

我认为它进行了正常的舍入(例如在Java的舍入模式约定中的 ROUND_HALF_UP ),但挖掘进一步证明这是错误的:

> /usr/local/bin/perl5.10.1 -e 'print(sprintf("%.2f", shift @ARGV)."\n");' 0.335
0.34
> /usr/local/bin/perl5.10.1 -e 'print(sprintf("%.2f", shift @ARGV)."\n");' 1.335
1.33
Run Code Online (Sandbox Code Playgroud)

floating-point perl printf

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

如果使用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输出定向到与NSLog相同的目标?

如何使printf的输出出现在Xcode Organizer控制台视图中?在连接设备上进行调试时,我可以在Xcode的调试控制台中的NSLog输出中看到printf输出,但我只能在Organizer控制台上看到NSLog输出.

我正在开发Objective-C++并使用printf来记录纯c ++代码.最终,我希望从设备断开连接时可以获得应用程序的输出.

xcode logging printf nslog ios

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

同时打印多个整数

我想知道是否有更好的方法在c中打印一组int;

目前我printf("%d" ,.. ) 为数组中的每个int 做了一个.

但是这会导致每个int一个系统调用?(如果我的理解是正确的).

最好将int数组转换为字符串缓冲区,然后在一次调用中打印缓冲区.

如有必要,我可以为它编写代码.

Q1.这是一个好主意还是太麻烦值得呢?

Q2.是否有任何库实现这样的事情.(无论我google什么回到初学者教程打印整数:s)

编辑 之前不知道数组的大小.

c printf

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

printf中的子说明符

int main ()
{
    float Num = 3254.4;
    printf("%06.4f",Num);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么不打印003254.3999出我的期望,但是3254.3999?

在发布之前我已经完全阅读了这篇文章.

c printf mingw32

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

这个printf技巧是如何工作的

取自这里:

printf("%d", printf("%*s%*s",a,"\r",b,"\r") );

将打印a + b的结果.

它究竟如何运作?

c printf

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