首页 > 代码库 > 在文件中的指定位置写入数据
在文件中的指定位置写入数据
笔者的应用场景:将图像指定区域的像素值按其空间位置写到 txt 文件中。
int hang = 4; // 矩阵行数 int lie = 8; // 矩阵列数 // 先在txt文件中构造一个空矩阵,然后向该矩阵中指定行列写入个位数 int main10() { FILE *filp = fopen("cc.txt", "w+"); for (int i = 0; i < hang; i++) { fseek(filp, lie, SEEK_END); fprintf(filp, "\n"); // 换行符占两个字节宽度 } for (int i = 1; i <= hang; i++) { fseek(filp, (i - 1)*(lie + 2), SEEK_SET); for (int j = 1; j <= lie; j++) { fprintf(filp, "%d", i); } } fclose(filp); while (1); return 0; } // 对上面程序的扩展,在矩阵中指定行列写入最高只有3位数的数据,两数之间以空格符间隔开。 int main11() { FILE *filp = fopen("cc.txt", "w+"); for (int i = 0; i < hang; i++) { fseek(filp, 4 * lie, SEEK_END); // 每个数值 fprintf(filp, "\n"); // 换行符占两个字节宽度 } for (int i = 1; i <= hang; i++) { fseek(filp, (i - 1)*(4 * lie + 2) + 1, SEEK_SET); // +1 表示每个数的空格放在数字前面,否则空格会自动被放在数字后面的。 for (int j = 1; j <= lie; j++) { if ((i + j) % 2) fprintf(filp, "%3d", rand()%200); else // 模拟跳过某些特定位置 fseek(filp, 3, SEEK_CUR); if (j < lie) fseek(filp, 1, SEEK_CUR); // 跳过空格 } } fclose(filp); while (1); return 0; } // 对上面程序的扩展,矩阵的第一行用于表示列标号,矩阵的第一列用于表示行标号 int main() { FILE *filp = fopen("cc.txt", "w+"); fprintf(filp, " "); // 5个空格 for (int j = 0; j < lie; j++) { fprintf(filp, " %3d", j); } fprintf(filp, "\n"); for (int i = 0; i < hang; i++) { fprintf(filp, "%3d: ", i); // 3个数据宽度+1个冒号+1个空格,一共5个字符宽度,即和第0行的前5个空格对应。 fseek(filp, 4 * lie, SEEK_CUR); fprintf(filp, "\n"); // 换行符占两个字节宽度 } for (int i = 1; i <= hang; i++) // 第0行是列标号 { fseek(filp, i*(4 * lie + 5 + 2) + 5, SEEK_SET); // 括号中的+5表示每行的长度,+2表示换行符,外面的+5表示跳过当前行的前5个字符。 for (int j = 1; j <= lie; j++) { if ((i + j) % 2) fprintf(filp, " %3d", rand() % 200); else fseek(filp, 4, SEEK_CUR); } } fclose(filp); while (1); return 0; }
在文件中的指定位置写入数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。