标签: printf

从MATLAB系统命令中查找换行符

我正在尝试将结果字符串从系统命令解析为外部程序.

[status,result] = system(cmd);
Run Code Online (Sandbox Code Playgroud)

结果打印出我的控制台,其线条正确分解,即

一号线

2号线

...

但它实际上只是一个长字符数组,并且在任何地方都没有换行符.matlab如何知道何时打印新行?我怎样才能将char数组分成单独的行以进行进一步的解析.谢谢!

string matlab printf system

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

printf类型促销和签名扩展

我很困惑如何在printf和一般情况下进行类型推广.我尝试了以下代码

unsigned char uc = 255
signed char sc = -128

printf("unsigned char value = %d \n", uc);
printf("signed char value = %d \n", sc);
Run Code Online (Sandbox Code Playgroud)

这给出了以下输出:

unsigned char value = 255
signed char value = -128
Run Code Online (Sandbox Code Playgroud)

这让我想知道促销是如何实际发生的以及是否发生了符号扩展.如果完成了符号扩展,则应将值255打印为负值(-128保持不变),如果未进行符号扩展,则应将-128打印为正值(255保持相同).请解释.

c printf

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

visual studio swprintf让我所有的%s格式化程序都需要wchar_t*而不是char*

我有一个多平台项目,在mac上编译很好,但在Windows上我所有的带有%s的swprintf调用都在寻找一个wchar_t而不是传递它的char*im.事实证明M $认为让%s代表除了广角字符函数中的字符以外的东西会很有趣... http://msdn.microsoft.com/en-us/library/hf4y5e3w.aspx

无论如何,我正在寻找一种创造性的编码技巧,比将ifdef以每个宽字符串调用结束更好

printf visual-studio

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

在C的printf中进行数字分组

我希望用千位分隔符(逗号或空格)输出大数字 - 基本上与如何在3位分组中显示数字但printf在C中使用(GNU,99)相同.

如果printf本身不支持数字分组,我怎么能用类似的东西来实现printf("%s", group_digits(number))呢?

它必须支持负整数,最好还有浮点数.

c printf grouping digit

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

麻烦在C程序中包装Printf

我正在尝试将printf包装在一个C程序中(好吧,实际上是_snprintf,但这个例子更简单)并且我无法使变量参数的东西起作用.这是我的代码:

#include <stdio.h>
#include <stdarg.h>

void works(void)
{
    printf("%d\n", 100);
}

void wrap_printf(const char *fmt, ...)
{
    va_list args;
    va_start(args, fmt);
    printf(fmt, args);
    va_end(args);
}

void broken(void)
{
    wrap_printf("%d\n", 100);
}

int main(void)
{
    works();
    broken();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

100
3668388
Run Code Online (Sandbox Code Playgroud)

va_start在我的代码中调用之后,args变量看起来很好,但是一旦我进入C运行时代码并且它们调用va_start该值看起来很糟糕.关于我可能做错什么的任何想法?

c printf

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

为什么printf与托管字符串一起使用?

我们正在挖掘一些非常古老的C++/CLI-Code(旧语法.NET Beta),看到类似的东西有点惊讶:

System::String ^source("Test-String");
printf("%s", source);
Run Code Online (Sandbox Code Playgroud)

程序正确输出

Test-String
Run Code Online (Sandbox Code Playgroud)

我们想知道,为什么可以将托管字符串源传递给printf- 更重要的是:为什么它可以工作?我不认为它是编译器的一些便利功能,因为以下不起作用:

System::String ^source("Test-String");
char pDest[256];
strcpy(pDest, source);
Run Code Online (Sandbox Code Playgroud)

这会产生(某种程度上预期的)编译错误,表示System::String^无法转换为const char*.因此,我唯一真正的解释是,将托管引用传递给va_list超过了所有编译器检查,并将本机代码用于使用指向托管堆的指针.由于在内存中System::String表示类似于char-Array,printf可能有效.或者编译器转换为a pin_ptr并将其传递给printf.

我不希望它自动编组String^to char*,因为这会导致内存泄漏,而不会引用实际的内存地址.

我们知道这不是一个好的解决方案,后来的Visual Studio-Versions引入的各种编组方法提供了一种更好的方法,但理解这里实际发生的事情会非常有趣.

谢谢!

.net printf c++-cli marshalling visual-studio-2010

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

带有打印联合值的怪癖

以下代码导致:

0.000000

10

在这种情况下,“数据”返回了什么?我知道n.data.idata并且n.data.fdata将是正确的用法,我只是好奇为什么整数值在这种情况下有效而浮点值却不起作用

#include<stdio.h>
#include<stdlib.h>

typedef struct node
{
    union container
    {
        int idata;
        float fdata;
    } data;
    struct node *next;
} Node;

int main()
{
    Node i = {.data.idata = 10};
    Node n = {.data.fdata = 10.0};
    printf("%f\n", n.data);
    printf("%d\n", i.data);

    printf("\nExiting program...\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c printf unions

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

即使没有使用STM32 gcc(arm-none-eabi-gcc)也链接printf

我似乎无法弄清楚为什么有些printf库函数会从libc_nano.a链接到我的代码中,即使我从不使用任何函数printf.它窃取了至少2K宝贵的闪存空间.我能看到的部分_printf_i,_vfprintf_r,_vfiprintf_r在我的链接器映射文件等.

我试过了

  • Wl, - exclude-libs选项
  • 链接描述文件中的EXCLUDE_FILE(..)

这些都不会使符号从地图文件中消失.

我的gcc选项:

CFLAGS = -Og -Wall -g3 -Wdouble-promotion -mcpu=cortex-m0 -mthumb -fmessage-length=0 -ffunction-sections -mfloat-abi=soft -DUSE_HAL_DRIVER

LFLAGS = -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -specs=nosys.specs -specs=nano.specs -Wl,--gc-sections 
Run Code Online (Sandbox Code Playgroud)

arm-none-eabi-gcc.exe(适用于ARM嵌入式处理器的GNU工具)5.2.1 20151202(re lease)[ARM/embedded-5-branch revision 231848] Copyright(C)2015 Free Software Foundation,Inc.这是免费的软件; 查看复制条件的来源.没有保修; 甚至不适用于适销性或特定用途的适用性.

首先,他们为什么要联系起来?有没有办法排除它们?

linker printf gcc arm stm32

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

在C中两个连续的printf()调用的奇怪行为

我在玩C; 看一下这个:

#include <stdio.h>
#include <stdlib.h>

void main() {
    printf("%d\n", 1.5);
    printf("%f", 0);
}
Run Code Online (Sandbox Code Playgroud)

我期待输出:

0
0.000000
Run Code Online (Sandbox Code Playgroud)

但它打印:

0
1.500000
Run Code Online (Sandbox Code Playgroud)

第一次printf()通过1.5第二次printf()吗?

PS:我知道(%d对于整数,%f浮标).正如我所提到的,我只是在搞乱代码.

PS2:我正在使用DevC++和Code :: Blocks.

c printf

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

F#打印出2D字符串数组

我正在制作一款名为Neutron的棋盘游戏.

let boardArray = array2D [ ["*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"];
                           ["*"; "1"; "*"; "2"; "*"; "3"; "*"; "4"; "*"; "5"; "*"];
                           ["*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"];
                           ["*"; "0"; "*"; "0"; "*"; "0"; "*"; "0"; "*"; "0"; "*"];
                           ["*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"];
                           ["*"; "0"; "*"; "0"; "*"; "N"; "*"; "0"; "*"; "0"; "*"];
                           ["*"; "*"; "*"; "*"; "*"; "*"; "*"; "*"; …
Run Code Online (Sandbox Code Playgroud)

printf f# multidimensional-array

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