gpt4 book ai didi

c - fprintf 将前 k 个字符写入缓冲区

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:53 25 4
gpt4 key购买 nike

我得到了一个我应该修改的文件路径,无论是将数据添加到文件中,还是覆盖 file.txt 中的数据。

我也给了一个限制,如果data指向的字符串中有100个字符,并且限制为10,那么fprintf应该只写前10个字符。

fprintf 似乎没有采用这样的参数(限制)。有人可以建议我解决这个问题的方法吗?提前致谢!

void my_write (char* path, int bytes_number, char* flag, char* data, int sockfd)
{
FILE* fp;
int n, i;
char buffer[BUFFER_SIZE];
if (!strcmp(flag, "override"))
{
fp = fopen(path, "w+"); /* Open file with flag 'w' to override data */
if (fp == NULL) /* File doesn't exist, invalid path*/
write (sockfd, "Failure", strlen("Failure"));
i = fprintf (fp, "%s\n", data);
if (i < 0)
write (sockfd, "Failure", strlen("Failure"));
else
write (sockfd, "Write Success", strlen("Write Success"));
}
rest of code
}

最佳答案

It seems fprintf doesn't take such a parameter (limit).

您可以在 printf 中为字符串指定宽度和精度。如果字符串较长,则在一段时间后给出的精度会截断该字符串:

printf("%.5s\n", data);

将打印最多五个字符的data

您可以通过指定星号来使宽度和精度可变。然后 printf 在 actzual(字符串)参数之前期望每个星的整数参数:

printf("%.*s\n", k, data);

请注意,宽度和精度必须是 int 类型。如有必要,转换参数:

printf("%.*s\n", (int) k, data);      // k is size_t, say

关于c - fprintf 将前 k 个字符写入缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37079456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com