标签: printf

在C中显示数字的二进制表示?

可能重复:
是否有printf转换器以二进制格式打印?

还在学习C和我在想:

给定一个数字,是否可以执行以下操作?

char a = 5;
printf("binary representation of a = %b",a);
> 101
Run Code Online (Sandbox Code Playgroud)

或者我是否必须编写自己的方法来转换为二进制?

c binary printf representation

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

从汇编中调用C函数 - 应用程序冻结在"call printf",我不知道为什么

我将参与一个大型的大会项目,但现在我刚开始学习这种新语言.我试图做一些简单的例子,比如你可能在highschool找到c ++(总和两个数字,是数字素数等).

现在我必须显示所有素数到n.问题是应用程序冻结在"call printf",我不明白为什么.

你能帮帮我吗?

.section    .data
prime_number_str:
.asciz  "%d "

.section    .text

.global     _start
_start:
pushl   $20
call .first_prime_numbers
addl $4, %esp
pushl $0
call exit


.first_prime_numbers:       #argument first n numbers
movl 4(%esp), %ecx  #get the first argument
do_test:
pushl %ecx      #push function arguments
call .prime 
addl $4, %esp       #restore the stack

#if not prime jump to the next number   
cmpl $0, %eax
je no_not_prime

#print the number
pushl %eax          #save eax
pushl %ecx          #first argument
pushl $prime_number_str     #text …
Run Code Online (Sandbox Code Playgroud)

assembly printf

6
推荐指数
1
解决办法
7197
查看次数

在C中如何打印在shell中重定向为输入的文件的文件名

$cc a.c
$./a.out < inpfilename
Run Code Online (Sandbox Code Playgroud)

我想在stdout上打印inpfilename.我怎么做 ?我在这里先向您的帮助表示感谢...

c shell printf command-line io-redirection

6
推荐指数
1
解决办法
4452
查看次数

使用排除列表在bash中查找包含find的目录

现在在你想到之前,"这已经完成了"请继续阅读.

像大多数尝试执行查找bash脚本的人一样,你最终会将脚本硬编码为单行命令,但最终会在接下来的几个月/几年内编辑这个内容,所以你希望最后你做得对第一次.

我现在正在编写一个小备份程序来备份目录并需要找到它们,而不是需要排除的Directorie列表.说起来容易做起来难.让我开始吧:

#!/bin/bash
BasePath="/home/adesso/baldar"
declare -a Iggy
Iggy=( "/cgi-bin" 
    "/tmp" 
    "/test" 
    "/html" 
    "/icons" )
IggySubdomains=$(printf ",%s" "${Iggy[@]}")
IggySubdomains=${IggySubdomains:1}
echo $IggySubdomains
exit 0
Run Code Online (Sandbox Code Playgroud)

现在在这结束时你得到/ cgi-bin,/ tmp,/ test,/ html,/ icons 这证明了这个概念有效,但是现在为了更进一步,我需要使用find来搜索BasePath并搜索所有子目录只有一个级别,并排除数组中的子目录列表...

如果我手动输入,它将是:

find /var/www/* \( -path '*/cgi-bin' -o -path '*/tmp' -o -path '*/test' -o -path '*/html' -o -path '*/icons' \) -prune -type d
Run Code Online (Sandbox Code Playgroud)

我是否应该想循环到每个子目录并做同样的事情......我希望你明白我的观点.

所以我想要做的似乎是可能的,但我有一点问题,printf",%s"不喜欢我使用所有这些find -path或-o选项.这是否意味着我必须再次使用eval?

我试图在这里使用bash的功能,而不是一些for循环.任何建设性的意见将不胜感激.

linux bash printf find

6
推荐指数
1
解决办法
4942
查看次数

将组合字符串和数字输入的单元格数组写入文本文件

考虑以下:

DateTime = {'2007-01-01 00:00';'2007-02-01 00:00';'2007-03-01 00:00'};
Headers = {'Datetime','Data'};
Dat = [100,200,300];

Data = [DateTime,num2cell(Dat')];
Final = [Headers;Data];
Run Code Online (Sandbox Code Playgroud)

如何将"Final"中的数据写入制表符分隔的文本文件中.我知道如何在变量仅由数字输入组成时使用fopen,fprintf等,但我正努力解决这个问题.我试过了:

fid = fopen('C:\Documents\test.txt','wt');
fprintf(fid,'%s\t%s\n',Final{:});
fclose(fid);
Run Code Online (Sandbox Code Playgroud)

但是,这不会生成与matlab中生成的文本格式相同的文本文件.怎样才能解决这个问题?

matlab printf

6
推荐指数
1
解决办法
8230
查看次数

printf具有无限while循环的异常行为

当我运行以下程序时,我没有得到任何输出.

#include <stdio.h>

int main()
{
    printf("hello");
    while(1)
    {

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

而如果我编辑printf命令在字符串的末尾添加一个'\n'字符,那么预期的输出就会出现.第一个代码中发生了什么?我简直无法理解.

c printf while-loop

6
推荐指数
1
解决办法
3739
查看次数

将命令的输出附加到文件而不换行

我在unix脚本中有以下行:

head -1 $line | cut -c22-29  >> $file
Run Code Online (Sandbox Code Playgroud)

我想在没有换行符的情况下附加此输出,而是用逗号分隔.有没有办法将此命令的输出提供给printf?我试过了:

head -1 $line | cut -c22-29 | printf "%s, " >> $file
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

printf "%s, " head -1 $line | cut -c22-29 >> $file
Run Code Online (Sandbox Code Playgroud)

这些都没有奏效.有人有主意吗?

unix printf append output

6
推荐指数
1
解决办法
6156
查看次数

在bytearray上打印

我有以下结构:

/** The description of an ordinary 8+3 DOS directory entry. */
struct  dirent
{
    byte    d_name[8];  //!< space padded name
    byte    d_ext[3];   //!< space padded extension

    byte    d_attr;     //!< the file attributes

    ......
};

printf("%s\n", de.d_name);
Run Code Online (Sandbox Code Playgroud)

我面临的问题是打印d_name我得到以下输出: 'INSTALL BAT!' 这不是我最想要的8个字符.

我的猜测是printf函数继续在内存中搜索字符串终止符,即使它超出了d_name边界.

有没有办法只打印'INSTALL'或者我是否需要遍历整个字节数组并单独打印字符?

c printf

6
推荐指数
1
解决办法
4978
查看次数

为什么我们不写int x = printf("text"); 因为printf()语句每次都返回一个整数值?

由于printf 函数每次使用时都会返回一个整数值(屏幕上写入的字符数),因此int每次printf调用时都不应强制将此值存储在变量中吗?

编辑:

如果函数返回某个值,为什么C不需要在函数调用时存储该值?

c printf

6
推荐指数
1
解决办法
809
查看次数

如何使用printf打印单精度浮点数

我正在尝试在x86_64程序集中打印浮点数,但它只是将值打印为零.

关于这个问题已经存在一些问题.通过确保设置在%al中使用的向量寄存器的数量,似乎可以解决一个问题.另一个表明你需要一个16字节的堆栈对齐.但是,我正在做这两件事而仍然没有得到正确的输出.

这是我的计划:

# prints a floating point value
.section .rodata
.fmt: .string "num: %f\n"
.num: .float 123.4

.section .text
.global main
.type   main, @function
main:
  subq $8, %rsp     # 16-byte alignment

  # print my number
  movss .num, %xmm0 # load float value
  movq $.fmt, %rdi  # load format string
  movb $1, %al      # use 1 vector register
  call printf

  # exit
  addq $8, %rsp     # undo alignment
  movq $0, %rax     # return 0
  ret
Run Code Online (Sandbox Code Playgroud)

assembly printf x86-64

6
推荐指数
1
解决办法
2978
查看次数