使用C中的格式说明符从fprinft中的char缓冲区读取特定范围的索引

安娜

我将尝试按目前的问题和解决方案进行详细描述。我目前拥有的解决方案不是最优的,我想使其更好。

注意:char inputline[1024]没有特定格式,可以包含任何格式的字符串。char inputline [1024]从具有数千行的文件中逐行读取行。这就是为什么优化对我来说非常重要的原因。

FILE *outfile = fopen("tests.txt", "w");
int start_index = 1; //index from where I want to write the characters from the inputline array to the file
int prev_index = start_index; //keep track of last character position written to file

char inputline[1024] = {"12044 This is the test String 2019 to 2025 is another test& and 2050"};
int loop_count = 6; // This can vary as I have just hardcoded a value here for testing
int i;        
for(i=0; i<loop_count; ++i)
{
    fprintf(outfile, "%c", inputline[prev_index + i]);
}
prev_index = prev_index + loop_count;// this keeps track of last position of character written to file at end
Sample input in char inputline[1024] = {"This is my day in 2020 1230023"}

Desired output in tests.txt: (for loop will loop 6 times as loop_count is 6)
his is

问题是我正在阅读"%c",这不是很理想,我想%s改用它。但是我无法理解如何在写入文件时通过指定in格式说明符将其转换为fprintf(outfile, "%c", inputline[prev_index + i]);要使用"%s"prev_index + i格式,因为我只希望inputline[prev_index + i]基于要写入文件的循环使用来自其中的字符

沙特涅夫

您可以使用格式说明符%.*s并传入length

https://ideone.com/UdC3aH

#include <stdio.h>

int main(void) {
    int start_index = 1;
    int length = 6;
    char inputline[] = "This is my day in 2020 1230023";

    printf("%.*s\n", length, inputline + start_index); //  you can use fprintf(outfile, "%.*s", length, inputline + start_index); here
    return 0;
}

输出:

他的是

另外,您可以使用strncpy()创建子字符串并使用它:

https://ideone.com/oyRJuG

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

int main(void) {
    int start_index = 1;
    int loop_count = 6;
    char inputline[] = "This is my day in 2020 1230023";
    char substr[1024];

    strncpy ( substr, inputline + start_index, loop_count);
    substr[loop_count] = '\0';
    printf("%s\n", substr); //  you can use fprintf(outfile, "%s", substr); here
    return 0;
}

请注意,您必须#include <string.h>在代码中

输出:

他的是

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sscanf说明符%[]和缓冲区溢出

来自分类Dev

sscanf说明符%[]和缓冲区溢出

来自分类Dev

读取C中缓冲区的特定部分

来自分类Dev

Tmux:如何使用粘贴缓冲区列表中的标识符粘贴特定缓冲区?

来自分类Dev

在C ++中定义Unicode时的映射格式说明符?

来自分类Dev

在C中获取char缓冲区(从读取的文件)中的值数

来自分类Dev

C从读取系统调用中在缓冲区中查找换行符

来自分类Dev

python格式说明符中的变量

来自分类Dev

scanf中double的格式说明符

来自分类Dev

在awk中重复格式说明符

来自分类Dev

如何在 C 中的 switch 中使用格式说明符

来自分类Dev

用于打印“ stat”缓冲区内容的格式说明符

来自分类Dev

将缓冲区(char *)传递给C中的函数

来自分类Dev

C ++读取缓冲区中的整个文件

来自分类Dev

在C中如何读取超出缓冲区末尾的内容?

来自分类Dev

C recv()未在缓冲区中读取

来自分类Dev

读取c中的输入后如何清除缓冲区?

来自分类Dev

声明C ++中的冲突说明符

来自分类Dev

printf()中的格式说明符要求输入int何时应为char

来自分类Dev

在printf中参数化格式说明符

来自分类Dev

用于EXECUTE的format()中整数变量的格式说明符?

来自分类Dev

用于EXECUTE的format()中整数变量的格式说明符?

来自分类Dev

在 c 中使用带有格式说明符的星号

来自分类Dev

使用C ++ API解析协议缓冲区中的错误

来自分类Dev

目标C中的动态缓冲区(使用ARC)

来自分类Dev

C stdlib函数中的抽象格式说明符(例如,printf,scanf)

来自分类Dev

单独在字符串中打印C格式说明符

来自分类Dev

C中sizeof()返回值的正确格式说明符

来自分类Dev

c中带有百分比字符的奇怪格式说明符

Related 相关文章

热门标签

归档