标签: printf

如何让$(/ bin/printf -6)返回-6并且不认为-6是一个选项

我有一个bash shell脚本,其中包含以下行:

g=$(/bin/printf ${i})
Run Code Online (Sandbox Code Playgroud)

当${i}包含类似的东西时-6,printf认为它被传递了一个选项.它无法识别该选项,因此会产生错误.

如果用${i}引号括起来,printf仍然认为它被传递了一个选项.

g=$(/bin/printf "${i}")
Run Code Online (Sandbox Code Playgroud)

如果我转义引号,变量$g则保持" -6",这不是我想要的.

g=$(/bin/printf \"${i}\") 
Run Code Online (Sandbox Code Playgroud)

有没有逃脱破折号( - ).

printf是一个BusyBox应用程序

bash shell printf busybox

4
推荐指数
2
解决办法
2277
查看次数

Printf - 访问冲突读取位置 - C++

0xC0000005:访问冲突读取位置0xcccccccc.

printf抛出此异常.

我不知道为什么会发生这种情况......这些字符串变量中有值.我使用printf错了吗?

救命!(请看开关盒)

string header;
string body;
string key;

if (!contactList.isEmpty()) {

    cout << "Enter contact's name: ";
    getline(cin, key);
    Contact * tempContact = contactList.get(key);
    if (tempContact != NULL) {
        string name = tempContact->getName();
        string number = tempContact->getNumber();
        string email = tempContact->getEmail();
        string address = tempContact->getAddress();

        //I've just put this here just to test if the variables are being initialized
        cout << name + " " + number + " " + email + " " + address << …
Run Code Online (Sandbox Code Playgroud)

c++ printf

4
推荐指数
2
解决办法
4327
查看次数

在Windows中没有回车符(CR)的情况下将新行打印到文本文件中

我正在用C编写一个程序,它将随机的十六进制值打印到文本文件中.打印值具有回车(CR)和换行(LF).但是,CR(在记事本++中可见)在使用文件时会导致问题.有没有办法打印一个只有LF和没有CR的新行.

这是代码:

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


void main(){
  int hexa_address, numberofAddress;
  char tracefile[50]; //name of file
  int seq_or_rand; //1 for random address; 2 for sequential address

  srand(time(NULL)); //reset the value of the random

  printf("This generator generates 32bits hexadecimal.\n\n");
  printf("Name of file: ");
  scanf("%s", tracefile);
  printf("Random (1) or Sequential (2): ");
  scanf("%d", &seq_or_rand);

  FILE *file;
  file = fopen(tracefile,"w"); // create file

  if(seq_or_rand == 1){ //random generator
    file = fopen(tracefile,"w"); // create file
    for(numberofAddress = 0; numberofAddress<10000;numberofAddress++){ //create 10000 address
        //if(numberofAddress!=0)

        fprintf(file, …
Run Code Online (Sandbox Code Playgroud)

c printf ansi

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

在c中添加到字符串末尾的额外字符

所以我试图在C中打印出一个字符串,当我打印出来时,我总是在字符串的末尾获得额外的字符.代码:

char binaryNumber[16] = "1111000011110000";
printf("binary integer: %s\n", binaryNumber);
Run Code Online (Sandbox Code Playgroud)

输出:

二进制整数:1111000011110000▒▒▒▒

你能帮我弄清楚为什么会这样吗?我认为这是我的代码中其他一些问题的根源.在我以更复杂的方式创建字符串之前我遇到了这个问题,并且在这种情况下也获得了额外的字符,但它们是不同的.所以我用最基本的方法制作了一个字符串(这里显示的方法),我仍然遇到问题

c string printf

4
推荐指数
2
解决办法
5991
查看次数

stm32 printf float变量

我想通过usart从stm32f405注销.在我的syscall.c文件中,我实现了通过usart打印的功能:

int _write(int file, char *ptr, int len)
{
    int todo;
    for (todo = 0; todo < len; todo++)
    {
    usart_send_char( *ptr++ );
    }
    return len;
}
Run Code Online (Sandbox Code Playgroud)

功能usart_send_char( *ptr++ );按预期工作.但是当我打电话时:

printf("%s, %d, %3.2f\r\n", "asd", 777, 13.2 );
Run Code Online (Sandbox Code Playgroud)

我得到: asd, 777, 0.00 浮动变量未正确打印.

Makefile文件:

PROCESSOR = -mcpu=cortex-m4 -mthumb -mfloat-abi=softfp -mfpu=fpv4-sp-d16
CFLAGS += $(PROCESSOR) $(INCLUDES) $(STFLAGS) -Wall -fno-strict-aliasing $(C_PROFILE)
LDFLAGS = $(PROCESSOR) -Wl,-Map=$(PROG).map,--cref,--gc-sections
Run Code Online (Sandbox Code Playgroud)

二手compilator:

Sourcery CodeBench Lite 2014.05-28
Run Code Online (Sandbox Code Playgroud)

哪里弄错了?

printf stm32

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

在C++中有没有更优雅的方式将sprintf和std :: string结合起来?

在我的C++代码中经常使用以下类型的辅助函数:

static inline std::string stringf(const char *fmt, ...)
{
    std::string ret;
    // Deal with varargs
    va_list args;
    va_start(args, fmt);
    // Resize our string based on the arguments
    ret.resize(vsnprintf(0, 0, fmt, args));
    // End the varargs and restart because vsnprintf mucked up our args
    va_end(args);
    va_start(args, fmt);
    // Fill the string
    if(!ret.empty())
    {
        vsnprintf(&ret.front(), ret.size() + 1, fmt, args);
    }
    // End of variadic section
    va_end(args);
    // Return the string
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

它有一些上升空间:

  1. 字符串长度没有任意限制
  2. 字符串是就地生成的,不会被复制(如果RVO正常工作)
  3. 外面没有惊喜

现在,我有一些问题:

  1. 重新扫描varargs有点难看
  2. 事实上,std :: …

c++ string printf string-formatting c++11

4
推荐指数
2
解决办法
1508
查看次数

disp(fprintf())打印fprintf和字符数.为什么?

巧合的是,我发现,它disp(fprintf())打印了fprintf的字符串加上它有的字符数.我知道,这disp()是简化的,但只是出于纯粹的好奇心,我想知道,为什么它打印字符的数量,因为这可能实际上有用的一天.
例如

disp(fprintf('Hi %i all of you',2))
Run Code Online (Sandbox Code Playgroud)

结果是

嗨,你们所有人15

matlab printf disp

4
推荐指数
2
解决办法
1540
查看次数

使用sprintf打印size_t需要多少个字符?

我想做这样的事情:

char sLength[SIZE_T_LEN];

sprintf(sLength, "%zu", strlen(sSomeString));
Run Code Online (Sandbox Code Playgroud)

也就是说,我想在缓冲区中打印一个类型的值size_t.问题是:应该是什么价值SIZE_T_LEN?关键是要知道所需的最小尺寸,以确保永远不会发生溢出.

c string size printf types

4
推荐指数
1
解决办法
277
查看次数

printf:%*c不能打印少于1个字符

我有一个代码打算在字符串后打印一些空格(以删除最终可能在这里的内容,因为我正在移动光标).

所以,我使用了这样的东西:

int some_length = 0;
char some_string[]="hello world";
printf( "%*c%s\n", some_length, ' ', some_string );
Run Code Online (Sandbox Code Playgroud)

我认为它会产生"hello world",但不会产生"hello world"(请注意,在我的真实代码中,空格是在字符串之后打印的,因为目标是擦除,而不是缩进,我只是这样做有工作样本).

那么,这种行为是有意的吗?由于some_length是0,人们可以合理地希望什么都不打印,对吗?这是一个未定义的行为,或者它可能是一个但是在标准库中(我怀疑它,但是......)?

c printf

4
推荐指数
1
解决办法
151
查看次数

在R中跳过sprintf格式字符串中的参数

我有一个函数返回给定两个日期的句点的字符串表示,但我希望用户能够控制格式.为此,我正在使用sprintf并且调用者传入格式字符串,使调用者可以灵活地使用以下内容:

> sprintf("from %s - %s","Mon 21","Sun 27")
[1] "from Mon 21 - Sun 27"
Run Code Online (Sandbox Code Playgroud)

要么

> sprintf("%s - %s inclusive","Mon 21","Sun 27")
[1] "Mon 21 - Sun 27 inclusive"
Run Code Online (Sandbox Code Playgroud)

我发现如果格式字符串中没有足够的%标记,那么无关紧要,所以你可以这样做:

> sprintf("week begin %s","Mon 21","Sun 27")
[1] "week begin Mon 21"
Run Code Online (Sandbox Code Playgroud)

但我找不到一种方法来构造一个格式字符串,该字符串删除第一个参数并返回"周末Sun 27".注意我真的想要一个只改变格式字符串的解决方案,或者知道这是不可能的......

我尝试了一些技巧,比如制作第一个格式0宽度%0s但没有喜悦:

> sprintf("%0s week ending %s","Mon 21","Sun 27")
[1] "Mon 21 week ending Sun 27"
Run Code Online (Sandbox Code Playgroud)

显然,我可以通过让调用者说出格式是否使用开始日期和/或结束日期,但是如果有一种方法可以使用sprintf格式字符串来完成这项工作.

printf r

4
推荐指数
1
解决办法
65
查看次数

标签 统计

printf ×10

c ×4

string ×3

c++ ×2

ansi ×1

bash ×1

busybox ×1

c++11 ×1

disp ×1

matlab ×1

r ×1

shell ×1

size ×1

stm32 ×1

string-formatting ×1

types ×1