标签: printf

警告:格式'%x'需要'unsigned int'类型的参数

当我尝试编译这个时,我得到以下错误,不知道为什么......

警告:格式'%x'需要'unsigned int'类型的参数,但参数2的类型为'char*'[-Wformat =]

printf("Name buffer address:    %x\n", buffer);
Run Code Online (Sandbox Code Playgroud)

代码:

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

main(){
        char name[200];
        printf("What is your name?\n");
        scanf("%s", name);
        bo(name, "uname -a");
}

int bo(char *name, char *cmd){
        char c[40];
        char buffer[40];
        printf("Name buffer address:    %x\n", buffer);
        printf("Command buffer address: %x\n", c);
        strcpy(c, cmd);
        strcpy(buffer, name);
        printf("Goodbye, %s!\n", buffer);
        printf("Executing command: %s\n", c);
        fflush(stdout);
        system(c);
}
Run Code Online (Sandbox Code Playgroud)

c printf format-specifiers

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

指针除了地址之外还有什么东西?[C]

我现在一直在大学学习C几个月了,但是我错过了一个关于指针的讲座,所以我试着通过在线学习来弥补它,我以为我得到了它 - 但我偶然发现的东西是非常烦人的为了我.

我知道指针只包含他们指向的地址 - 例如,如果到目前为止我理解了所有内容,我有:

int *pointer;
int number = 30;
pointer = &number;
printf("Number at location: %d", *pointer);
Run Code Online (Sandbox Code Playgroud)

这应该没问题.我将变量号的地址分配给指针,然后通过解除引用指针并从地址获取实际值来最终打印它.令我恼火的是焦点指针.

我已经阅读了字符串数组/指针,所以我尝试了一些事情,当我注意到一些奇怪的东西(至少我的眼睛)发生了,也有int指针:

char* pointer;
char array[] = "Dingleberry";
pointer = array;
printf("%s\n", pointer);
return 0;
Run Code Online (Sandbox Code Playgroud)

我知道我不是直接分配地址,但是如果我没记错的话,使用数组,这不一定与指针结合 - 无论如何 - 这里的代码按预期工作,它打印出"Dingleberry".我现在的问题是......为什么?如果没有解除引用,指针不应只保存值的地址吗?如果我在这里取消引用,程序崩溃,它确实显示地址,如果我使用&虽然.

编译时我没有收到任何警告.此外,如果我使用它不应该工作:

printf("%c", pointer); 
Run Code Online (Sandbox Code Playgroud)

只收到一封信?(我的意思是,尝试这确实显示了一个警告 - 但我有兴趣变得更好并排除我最有可能的愚蠢错误观念.)

c arrays printf pointers format-specifiers

3
推荐指数
1
解决办法
124
查看次数

基本C编程printf棘手

int main()
{

  printf("%d %d",1,2,3,4,5);

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

输出:1,2

int main()
{
  printf("%d %d",(1,2,3,4,5));

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

输出:5,垃圾值

那么请解释为什么添加括号/括号会有所不同?

c printf

3
推荐指数
1
解决办法
235
查看次数

printf一个浮点值,其精度(小数位数)在变量中传递

我可以打印精度为3位十进制数的浮点值

double f = 1.23456;
printf( "%.3f", f );
Run Code Online (Sandbox Code Playgroud)

现在我有一些请求的十进制数字,这些数字不是固定的,而是存储在变量中

int precision;
precision = atoi( argv[ 1 ] ); // ...just for example
double f = 1.23456;
Run Code Online (Sandbox Code Playgroud)

如何f使用指定的小数位数打印值precision?

我可以以编程方式编写格式字符串,printf但我想知道是否有更简单的方法来完成它.

c floating-point precision printf string-formatting

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

数据类型不匹配和冲突编译器

我正在一个名为TutorialsPoint的网站上学习C编程语言的基本概念.本网站上的源代码示例可以包含一个"试一试"按钮,该按钮可以使用在线c编译器(GNU GCC版本4.7.2)打开在线c编程环境.在一个示例中,演示了sizeof()函数.这是源代码.

#include <stdio.h>
#include <limits.h>

int main() {

  printf("Storage size for int : %d \n", sizeof(int));

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

链接到课程:TutorialsPoint - C数据类型

在在线编程环境中编译和执行此程序时,将生成以下输出:

"Storage size for int : 4"
Run Code Online (Sandbox Code Playgroud)

当我尝试使用GNU GCC版本5.2.1在我的计算机上编译相同的代码时,收到以下错误消息:

gcc sizeofExample.c
sizeofExample.c: In function 'main':
sizeofExample.c:6:10: warning: format '%d' expects argument of type 'int',
but argument 2 has type 'long unsigned int' [-Wformat=]
  printf("Storage size for int: %d \n", sizeof(int));
         ^
Run Code Online (Sandbox Code Playgroud)

这是我的源代码,只是为了彻底:

#include <stdio.h>
#include <limits.h>

int main()
{
  printf("Storage size for int : %d \n", …
Run Code Online (Sandbox Code Playgroud)

c printf sizeof

3
推荐指数
1
解决办法
806
查看次数

关于unpack()和printf()中的v标志的Perl问题

我想完成以下事项:

对于任意Perl字符串(无论它是否以UTF-8内部编码,以及是否设置了UTF-8标志),从左到右扫描字符串,对于每个字符,打印Unicode代码点以十六进制格式表示该字符.为了让自己绝对清楚:我不想打印UTF-8字节序列或其他东西; 我只想为字符串中的每个字符打印Unicode代码点.

首先,我提出了以下解决方案:

#!/usr/bin/perl -w

use warnings;
use utf8;
use feature 'unicode_strings';

binmode(STDOUT, ':encoding(UTF-8)');
binmode(STDIN, ':encoding(UTF-8)');
binmode(STDERR, ':encoding(UTF-8)');

$Text = "\x{3B1}\x{3C9}";
print $Text."\n";
printf "%vX\n", $Text;

# Prints the following to the console (the console is UTF8):
# ??
# 3B1.3C9
Run Code Online (Sandbox Code Playgroud)

然后我看到了一些例子,但没有合理的解释,这让我怀疑我的解决方案是正确的,现在我对自己的解决方案以及示例都有疑问.

1)Perl关于(...)printf中v标志的文档说:

"这个标志告诉Perl将提供的字符串解释为整数向量,字符串中的每个字符都有一个.[...]"

但它没有说明"整数向量"究竟意味着什么.在查看我的示例的输出时,似乎那些整数是Unicode代码点,但我希望确认这一点的人确认了这一点.

因此问题是:

1)我们可以确定从字符串中拉出的每个整数都是相应字符的Unicode代码点(而不是其他字节序列)吗?

其次,关于我找到的一个例子(略有修改;我不记得我从哪里得到它,也许来自Perl文档):

#!/usr/bin/perl -w

use warnings;
use utf8;
use feature 'unicode_strings';

binmode(STDOUT, ':encoding(UTF-8)');
binmode(STDIN, ':encoding(UTF-8)');
binmode(STDERR, ':encoding(UTF-8)');

$Text = "\x{3B1}\x{3C9}";
print $Text."\n";
printf "%vX\n", $Text for unpack('C0A*', $Text);

# …
Run Code Online (Sandbox Code Playgroud)

perl printf for-loop unpack pack

3
推荐指数
1
解决办法
174
查看次数

为什么这段代码从分叉执行8次printf?

学习决赛,我遇到了这个问题.他们询问以下代码执行printf的次数:

#include    "csapp.h"
void    doit()  {   
Fork();
Fork();
printf("hello\n");
return; 
}
int main()
{
doit();
printf("hello\n");
exit(0);
}
Run Code Online (Sandbox Code Playgroud)

解决方案说它printf执行了8次,但我无法弄清楚原因.我一直试图绘制代码中发生的事情的图片,但我的图片看起来好像只执行了4次.

c printf fork

3
推荐指数
1
解决办法
48
查看次数

snprintf负值/缓冲区大小的零值

如果将负数或0作为第二个参数传递给snprintf()它,它是否会在提供的缓冲区位置写入.想知道这不会导致任何意外行为.

int snprintf(char *str, size_t size, const char *format, ...);
Run Code Online (Sandbox Code Playgroud)

c printf buffer

3
推荐指数
2
解决办法
1691
查看次数

Printf和Array

我被问到这个问题是一个课堂练习:

int A[] = {1,3,5,7,9,0,2,4,6};

printf("%d\n", *(A+A[1]-*A));
Run Code Online (Sandbox Code Playgroud)

我无法在纸上弄明白,所以继续编译一个简单的程序并对其进行测试,发现printf("%d",*A)总是给我1输出.

但我仍然不明白为什么会这样,所以如果有人能够解释这一点会很棒.

c arrays printf

3
推荐指数
1
解决办法
221
查看次数

在php printf函数中更改表的颜色时发生错误

我想使用printf函数更改php文件中表格文本的颜色.但是当我使用这两种方法时,我失败了.你能告诉我怎么会发生这种情况?我怎样才能改变颜色?方法A:

 <?php   
      printf('<tr>');  
      printf('<td><font color='red'>abc</font></td>');  
      printf('</tr>');
  ?>
Run Code Online (Sandbox Code Playgroud)

方法B:

 <?php
  printf('<tr>');
  printf('<td style="color:red">abc</td>');
  printf('</tr>');
 ?>
Run Code Online (Sandbox Code Playgroud)

PS:原始问题:(这是代码的一部分)

 $userrow = mysql_fetch_array($userqueryresult);
            $thisuserid = $userrow[0];
            $user_type=$userrow[1];

printf("   <td valign = 'center'  width='40%%'>
<a href='show_user.php?u=%d'>
<font color='red'>%s</font></a></td>\n",$thisuserid, $key);
Run Code Online (Sandbox Code Playgroud)

事实上,当我使用color ="red"时,它会失败而color ='red',它有效."""和""之间有什么区别吗?但正如Julie Pelletier所说,"abc"它起作用了.这也是""".

html php printf html-table

3
推荐指数
1
解决办法
50
查看次数