我想从.ppm类型的文件中扫描文档,这些文件是图像文件,但遵循以下数据结构
P3
4 4
255
255 255 0 255 255 0 255 255 0 255 255 0
255 255 0 255 0 0 128 128 128 255 255 0
255 255 0 0 255 0 0 0 255 255 255 0
255 255 0 255 255 0 255 255 0 255 255 0 每3个整数标记一列,因此在前3行之后,这将标记4x4表的模式,如第二行所示。
我的第一步是在这样一个文件中读取,其中的高度和宽度可以改变,然后使用scanf和printf以准确的格式重新打印它。
我的尝试如下:
scanf(" %d%d %d", &width, &height, &depth);
printf("P3\n%d %d\n %d\n", width, height, depth);
while(scanf("%c", &input) >= 1) {
for (int i = 0; i < width; i++) {
printf("%c %c %c ", input, input, input);
for (int j = 0; j < height; j++) {
printf("\n");
}
}
}知道我错过了什么吗?
发布于 2017-09-13 20:19:44
您的代码中有许多错误:
input。因此,所有像素都具有相同的值。您可能希望在内部循环中调用scanf。%c只读取一个字符,而不是一个数字。即使像素值的范围在一个字节内,也应该使用%d。print,但使用不同的参数,除非您只想编写黑白图像:printf("%d %d %d ", r, g, b);。同样,您需要使用%d而不是%c。scanf("%*s %d %d %d", &width, &height, &depth);。'%*s‘读取字符串而不将其赋值给变量。https://stackoverflow.com/questions/46205927
复制相似问题