标签: printf

printf“列”和换行符

在我的程序中,我试图为一个文件设置列标题,我将在整个脚本中添加该文件。

我用来创建标题的行是:

printf '%-10s' "csci" "csc" "Line #" "File Name" > "$1 3.txt"
Run Code Online (Sandbox Code Playgroud)

这就像我想要的那样创建标题,但是当我添加下一行时,它会添加到该行的末尾而不是下一行。

我一直在尝试在标题创建行中添加换行符,因此添加的下一行将是空行,但我添加换行符的所有尝试都得到了奇怪的结果(或者我只是不想要的结果)。

我尝试像这样添加 \n: '%-10s\n',但这只会使我的标题显示在单独的行上(这是我所期望的,但无论如何都必须尝试这个)。

然后我尝试了:printf '%-10s' "csci" "csc" "Line #" "File Name" "\n"> "$1 3.txt",但这只按原样打印出 \n ,而没有实际给我一个换行符。

那么,如果我的问题现在还不明显,我怎样才能在那里换行呢?

bash printf newline

0
推荐指数
1
解决办法
2412
查看次数

c 中函数调用中的参数太多?

我正在尝试创建一个颜色菜单,但最后一行报告了一些错误。

puts("I don't know about the color %c",input);
Run Code Online (Sandbox Code Playgroud)

这是声明

char input[7];
Run Code Online (Sandbox Code Playgroud)

和初始化

scanf("%c",&input);
Run Code Online (Sandbox Code Playgroud)

错误在这里

Too many arguments in function call
error: expected declaration specifiers or '...' before '&' token
scanf("%c",&input);
        ^
error: expected declaration specifiers or '...' before string constant
scanf("%c",&input);
   ^~~~
Run Code Online (Sandbox Code Playgroud)

为什么?

c printf scanf c-strings char

0
推荐指数
1
解决办法
433
查看次数

为什么这个简单的 C 程序没有显示任何输出?

我必须计算循环针对给定输入运行的次数,我正在尝试使用自定义值n来提出公式,但以下虚拟程序不显示任何输出,也不显示任何错误。还有的自定义值n而变化的4^k,我已经使用了一个随机值64,看看有多少次的循环运行。

我试图printf()在 while 循环本身中包含该语句,以查看编译器是否甚至进入该循环,但我仍然没有得到任何结果。我没有用 C 做过很多编程,我在一个在线编译器中运行程序。

int main()
{
    int i;
    int j;

    int n=64;
    int count=0;
    
    for(i=1;i<=n;i++){
        j = 2;
        while(j<=n){
            j = i*i;
            count +=1 ;
            
        }
    }
    
    printf("%d",count);
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c printf for-loop while-loop

0
推荐指数
1
解决办法
76
查看次数

如何自定义C printf 函数使其自动添加消息日志?

我正在为不同类型的用户开发一个 C 项目。对于日志记录和调试,我真的很感激一个定制的printf函数,它只是在消息的开头添加了一个表明用户类型的标签。是否可以不printf从头开始重写函数?

c printf

0
推荐指数
1
解决办法
49
查看次数

超过4个参数的“snprintf”有什么用?

我的代码中有如下内容:这是在 linux 下创建设备的代码 /dev

#define PRINTER_STR "printer_"
char str[32];
snprintf(str, sizeof(str), PRINTER_STR "%s%s", dev->type, "%u");
device_create(mycan_drv.class, parent,
              MKDEV(dev->nMajor, dev->nMinor),
              dev, str, dev->nMinor);
Run Code Online (Sandbox Code Playgroud)

第四参数snprintfdev->type分配有像琴弦epsonhpcanon

实现的输出是这样的: printer_epson32, printer_hp33,printer_canon34

在上面的输出字符串中,我无法理解像32, 33, 之类的数字是如何34构建的。我可以理解这是因为第 5 个参数"%u"传递给snprintf. 但是怎么样?

我得到的所有参考文献都包含最多 3 个或 4 个snprintf. 请帮忙。

c printf linux-device-driver

0
推荐指数
1
解决办法
60
查看次数

printf 在 C 中使用是否不安全

我是 C 的新手,所以我开始玩一些代码。我的代码中有一个错误,因为我认为使用使用printf(pass)不安全,因为它可以覆盖该值,因此对用户不安全。我想知道printf(pass)我的代码不安全是否正确?另外,我怎样才能让用户在finally logged in不更改代码的情况下打印消息。有没有办法做到这一点?

我的代码:

#include <stdio.h>

char pass[100];

char getPass() {
  int value = 'G';
  int * j = & value;
  fgets(pass, sizeof(pass), stdin);
  printf("your entered pass is ");
  printf(pass);
  return (char)( * j);
}

void main() {
  printf("enter the pass here ");
  if (getPass() == 'K') {
    printf("finally logged in\n");
    exit(0);
  } else {
    printf("Wrong password\n");
    exit(1);
  }
}
Run Code Online (Sandbox Code Playgroud)

c printf c-strings fgets

0
推荐指数
1
解决办法
531
查看次数

超过 15 个字符的字符字符串出错

为什么 gcc 不允许我使用大于 15 的字符维数?

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

int main()
{
    char alphabet[]={'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    int dim_alph;
    dim_alph=strlen(alphabet);
    printf("%s has %d characters\n", alphabet, dim_alph);
    return 0;
}`
Run Code Online (Sandbox Code Playgroud)

它在字符串和维度上都给了我无效的输出(如果我停在“P”字符而不是“O”字符上)

c printf c-strings char undefined-behavior

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

为什么我在使用 C 语言的 CodeVisionAVR 中得到未定义的符号“sprintf”?

我正在使用 C 在 CodeVision AVR 中进行编码,我想从 0 数到 100(计数器),然后将其显示在 Proteus 的 LCD 上。在 CodeVision 中选择“全部构建”时,出现此错误。我不知道为什么。

未定义符号 'sprintf'

编码:

#include <mega16.h>
#include <delay.h>
#include <alcd.h>
void main(void)
{
    int i;
    char buffer[10];
    lcd_init(16);
    while(1)
    {
        for(i=0;i<=100;i++)
        {
            lcd_clear();
            lcd_gotoxy(0,0);
            sprintf(buffer, "Time=%2d", i);
            lcd_putsf(buffer);
            delay_ms(100);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c printf lcd undefined codevisionavr

0
推荐指数
1
解决办法
475
查看次数

`printf()` 可以有一个宏参数吗?

我正在使用以下printf功能:

    printf("%-8s%-21s%-17s%-6s\n", "index", "Name", "Effect", "Type");
Run Code Online (Sandbox Code Playgroud)

但是,我想使用预定义的宏而不是“8”:

#define NAME_SIZE 8
Run Code Online (Sandbox Code Playgroud)

当我尝试替换它时,IDE 无法识别它并给出错误:(Invalid conversion specifier N宏的第一个字母)。我尝试将宏名称放在()括号中或放置一个间隔,但也不起作用。所以我想知道:甚至可以将宏作为参数放入printf函数中,如果是,如何?我很抱歉提出这样一个奇怪的问题,但我找不到任何信息。

c c++ macros printf

0
推荐指数
1
解决办法
85
查看次数

C 打印中的十六进制宽度无法正常工作?

我正在打印这样的三个字节的数组:

cmd_buf 被作为 const char *

    for (ii = 0; ii<=2; ii++) {
        printf("byte[%0d] = %02x\n", ii, cmd_buf[ii]);
    }
Run Code Online (Sandbox Code Playgroud)

但我看到的是:

# BUFFER IS b4a602
# byte[0] = ffffffb4
# byte[1] = ffffffa6
# byte[2] = 02
Run Code Online (Sandbox Code Playgroud)

如果我这样做,它可以正常工作:

       printf("byte[%0d] = %02x\n", ii, (unsigned char) cmd_buf[ii]);
Run Code Online (Sandbox Code Playgroud)

%02x应该只打印两个字符吗?为什么它表现得像一个有符号的值?

c printf

0
推荐指数
1
解决办法
45
查看次数