在我的程序中,我试图为一个文件设置列标题,我将在整个脚本中添加该文件。
我用来创建标题的行是:
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 ,而没有实际给我一个换行符。
那么,如果我的问题现在还不明显,我怎样才能在那里换行呢?
我正在尝试创建一个颜色菜单,但最后一行报告了一些错误。
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)
为什么?
我必须计算循环针对给定输入运行的次数,我正在尝试使用自定义值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函数,它只是在消息的开头添加了一个表明用户类型的标签。是否可以不printf从头开始重写函数?
我的代码中有如下内容:这是在 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)
第四参数snprintf被dev->type分配有像琴弦epson,hp,canon。
实现的输出是这样的:
printer_epson32, printer_hp33,printer_canon34
在上面的输出字符串中,我无法理解像32, 33, 之类的数字是如何34构建的。我可以理解这是因为第 5 个参数"%u"传递给snprintf. 但是怎么样?
我得到的所有参考文献都包含最多 3 个或 4 个snprintf. 请帮忙。
我是 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) 为什么 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 在 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) 我正在使用以下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函数中,如果是,如何?我很抱歉提出这样一个奇怪的问题,但我找不到任何信息。
我正在打印这样的三个字节的数组:
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应该只打印两个字符吗?为什么它表现得像一个有符号的值?