我只是在学习C而且由于涉及到iOS开发,我对Objective-C有一点了解,但是,在Objective-C中,我用它NSLog(@"%i", x);来将变量x打印到控制台,但是我一直在阅读一些C教程,他们正在说要用%d而不是%i.
printf("%d", x);
并且正确地将xprintf("%i", x);打印到控制台.
这些似乎都让我到了同一个地方所以我问经验丰富的开发人员哪个更受欢迎?还有一种语义正确还是正确?
在我必须维护的一些代码中,我看到了一个格式说明符%*s.任何人都可以告诉我这是什么以及为什么使用它?
它的用法示例如下:
fprintf(outFile, "\n%*s", indent, "");
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个接受可变数量参数的函数,比如printf,做一些事情,然后将变量列表传递给printf.我不知道如何做到这一点,因为它似乎必须将它们推入堆栈.
大概是这样的东西
#include <stdio.h>
#include <stdarg.h>
void forward_args( const char *format , ... ){
va_list arglist;
printf( format, arglist );
}
int main (int argc, char const *argv[]){
forward_args( "%s %s\n" , "hello" , "world" ); return 0;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
由于它没有强类型,我认为它只是选择了正确的内存大小并根据参数的类型对其进行解释.但是float和double都使用%f,它们的大小不同.
PS我可以看到如何通过将值复制到临时和转换(这是正确的吗?)可以起作用,但是它对scanfs/sscanf有什么作用?
像这样转换int时:
char a[256];
sprintf(a, "%d", 132);
Run Code Online (Sandbox Code Playgroud)
什么是确定如何大的最好方式一个应该是什么?我假设手动设置它很好(因为我看到它在任何地方使用),但它应该有多大?在32位系统上可能的最大int值是多少,是否有一些棘手的方法来确定它?
我想删除我在这行代码上发出的警告,
FILE *fil;
char *imp;
(...)
fprintf(fil,imp);
Run Code Online (Sandbox Code Playgroud)
事情就是当我这样做它在文件上写下我想要的,但如果我应用格式%s它不会,像这样
fprintf(fil, "%s", imp);
Run Code Online (Sandbox Code Playgroud) 我有一个浮点数,如4917.24.我想将它打印到小数点前总共有五个字符,前导零,小数点后三位数.
我尝试printf("%05.3f", n)使用我正在使用的嵌入式系统,但它会打印出来*****.我的格式说明符是否正确?
我最近开始用C编程,来自Java和Python.现在,在我的书中,我注意到要制作一个"Hello World"程序,语法是这样的:
char message[10]
strcpy(message, "Hello, world!")
printf("%s\n", message);
Run Code Online (Sandbox Code Playgroud)
现在,这个例子使用了一个char数组,我想知道 - 字符串发生了什么?为什么我不能简单地使用其中一个?也许有不同的方法来做到这一点?
我想打印出unsigned long long这样的:
printf("Hex add is: 0x%ux ", hexAdd);
Run Code Online (Sandbox Code Playgroud)
但我得到了类型转换错误,因为我有一个unsigned long long.
是System.out.printf和System.out.format完全相同或者它们可能以某种方式不同?