将字符串打印到文件的有效方法

n17*_*911 1 c

我有一个

char* aString
Run Code Online (Sandbox Code Playgroud)

我想写的部分aString之间fromto,什么是最有效的方法是什么?

我想到了一种一次写1个字符的方法.

char* p = aString + from;
for (int i =0; i < (to-from); i++) {
    fprintf(aFile, "%c", p++);
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更快的方法?

R S*_*hko 6

唐是对的,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)