c - %c 在 while 循环中保留新行字符,修复吗?

标签 c char newline grayscale

/*Title: P3.c
Location: ~/csc1710/P3/P3.c
Class: CSC1710
Name: Emily
Date: 02-18-2017

This program is meant to convert a colored image to black and white.*/

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

int main(void)
{
   int height, width;
   char red;
   char green;
   char blue;
   char imageType[3];
   char comment[256];
   char newlinechar;
   int mcc;
   unsigned char color;

   //scan and print for image type
   fscanf(stdin,"%[^\n]%c",imageType,&newlinechar);
   strncpy(imageType,"P2",3);
   fprintf(stdout,"%s\n",imageType);

   //scan and print for comment
   fscanf(stdin,"%[^\n]%c",comment,&newlinechar);
   strncpy(comment,"#EMILY MORAN Black and White Conversion Routine, Version 0.1",256);
   fprintf(stdout,"%s\n",comment);

   //scan and print for height and width
   fscanf(stdin,"%d %d",&width,&height);
   fprintf(stdout,"%d %d\n",width,height);

   //scan and print for max color code
   fscanf(stdin,"%d",&mcc);
   fprintf(stdout,"%d\n",mcc);

   //while loop for RGB numbers
   while(fscanf(stdin," %c", ,&red)!=EOF){   
      fscanf(stdin,"%c",&green);
      fscanf(stdin,"%c",&blue);

      color =(unsigned char)0.3*red+0.5*green+0.2*blue;

      fprintf(stdout,"%hhu\n",color);
   }

  return(0);
  }

以上是我的 CSC 类(class)的编程项目。该项目的第一部分是使用整数值将 ppm 图像转换为 pgm(对其进行灰度缩放)。这部分在我的图像编辑器中非常适合我。

第二部分是通过将这些整数值设置为字符来使用更少的空间。但是我现在遇到了图像显示不正确的问题。它仍然是灰度图像,但与第一个图像不同。今天早上我的教授谈到了这个错误,即循环没有跳过新行,但是当我尝试在 while 循环中编辑 fscanf 以使其显示为 newImage 和注释时,编译器会提示分段失败。

顺便说一句,我们正在将 .ppm 文件输入到程序中,然后输出新的 .pgm 值。

谁能帮我看看代码中的问题吗?谢谢!

最佳答案

当您输出新的颜色数据时,您将包含一个 \n 字符

fprintf(stdout,"%hhu\n",color);

当它应该是一个连续的 block 时。所以应该是这样的

fprintf(stdout,"%hhu",color);

关于c - %c 在 while 循环中保留新行字符,修复吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42347602/

相关文章:

php - 如何渲染从 mysql 表中获取并在 php 页面中使用的多个段落?

python:使用回车和逗号打印不起作用

java - C语言访问手机中的下载文件夹

c++ - 我如何简单地比较 C++ 中的字符?

c++ - 将 char 乘以整数 (c++)

C 数组 char 与数组 int 比较

python - 删除 Python 字符串中的换行符/空字符

c - 这是编译器错误吗?

c - 如何检查内核中函数的性能

c - 显示 C 文件中的所有函数