将 printf 与非空终止字符串一起使用
假设您有一个非 null
终止的字符串,并且您知道它的确切大小,那么如何在 C 中使用 printf
打印该字符串呢?我记得有这样的方法,但现在找不到了......
Suppose you have a string which is NOT null
terminated and you know its exact size, so how can you print that string with printf
in C? I recall such a method but I can not find out now...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
printf 有一种可能性,它是这样的:
不需要复制任何东西,不需要修改原始字符串或缓冲区。
There is a possibility with printf, it goes like this:
No need to copy anything, no need to modify the original string or buffer.
以下是
%.*s
的工作原理及其指定位置的说明。第二种形式用于从参数列表中获取精度:
— 输出转换语法< glibc 手册中的 /a>
对于
%s
字符串格式化,精度有特殊含义:— 其他输出转换< glibc 手册中的 /a>
其他有用的变体:
"%*.*s", maxlen, maxlen, val
将右对齐,在前面插入空格;"%-*.*s", maxlen, maxlen, val
将左对齐。Here is an explanation of how
%.*s
works, and where it's specified.The second form is for getting the precision from the argument list:
— Output conversion syntax in the glibc manual
For
%s
string formatting, precision has a special meaning:— Other output conversions in the glibc manual
Other useful variants:
"%*.*s", maxlen, maxlen, val
will right-justify, inserting spaces before;"%-*.*s", maxlen, maxlen, val
will left-justify.您可以使用 fwrite() 来输出!
这样,您将把第一个字符(在 number_of_chars 变量中定义的数字)输出到一个文件,在本例中输出到 stdout(标准输出,您的屏幕)!
You can use an fwrite() to stdout!
This way you will output the first chars (number defined in number_of_chars variable ) to a file, in this case to stdout (the standard output, your screen)!
printf("%.*s", length, string)
将不起作用。这意味着打印最多长度字节或空字节,以先到者为准。如果您的非空终止字符数组在长度之前包含空字节,则 printf 将在这些字节上停止,并且不会继续。
printf("%.*s", length, string)
will NOT work.This means to print UP TO length bytes OR a null byte, whichever comes first. If your non-null-terminated array-of-char contains null bytes BEFORE the length, printf will stop on those, and not continue.
字符串长度将为 5。
The string length will be 5.
我编辑了代码,这是另一种方式:
I edited the code,heres another way: