我有一个
char* aString
Run Code Online (Sandbox Code Playgroud)
我想写的部分aString之间from和to,什么是最有效的方法是什么?
我想到了一种一次写1个字符的方法.
char* p = aString + from;
for (int i =0; i < (to-from); i++) {
fprintf(aFile, "%c", p++);
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更快的方法?
唐是对的,fwrite是最快的.
也就是说,这里有一个知道printf(和snprintf,vprintf等)的功能,可以让你在一次通话中完成.
printf("%.*s", to - from, aString + from);
Run Code Online (Sandbox Code Playgroud)
这是如何工作的.为字符串提供精度表示打印不超过那么多字符(如果它首先找到'\ 0',它可以打印更少).所以一行如下:
printf("%.5s", "0123456789");
Run Code Online (Sandbox Code Playgroud)
将打印:
01234
Run Code Online (Sandbox Code Playgroud)
接下来,如果需要在运行时指定精度,请用*替换数字,并在字符串之前将长度作为函数参数提供:
printf("%.*s", 5, "0123456789"); // same as before
Run Code Online (Sandbox Code Playgroud)
如果你想要做的只是打印字符串的一部分,这个技巧就是矫枉过正.但结合其他格式,它可能非常有用:
printf("Token %d: \"%.*s\"\n",
tok,
token_info[tok].len,
str + token_info[tok].start);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
933 次 |
| 最近记录: |