热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于C的一道编程,求指导……

#include<stdio.h>intmain(void){charsourceImage[20*15*3];打开一文本文件FILE*ptr

#include 
int main ( void )
{
char sourceImage[20*15*3];
// 打开一文本文件
FILE *ptr = fopen ( "Log.txt", "w+" );
// 遍历数组并交换r,b, 同时输出数据
unsigned int x, y;
for ( y = 0; y < 15; y++ )
{
for ( x = 0; x < 20*3; x +=3 )
{
// 20*3代表一行的字节数, 为什么要用这个索引呢, 请看下图
unsigned char r  = sourceImage[x + y*20*3 + 0];
unsigned char g = sourceImage[x + y*20*3 + 1];
unsigned char b = sourceImage[x + y*20*3 + 2];
unsigned char swap;

swap = r;
r = b;
b = swap;
fprintf (  ptr, "%d, %d, %d ", r, g, b );
}
fprintf ( ptr, "\n" );
}
fclose ( ptr );
return 0;
}

这个程序里面的红色部分是什么意思,谁能帮我解释一下。

18 个解决方案

#1


交换值

#2


交换r和b的值

#3


交换r和b的值,然后用fprintf 函数写入到文件Log.txt

#4


swap = r;
r = b;
b = swap;
交换r和b的值,swap暂存,为什么要用三个变量LZ仔细看看书。

fprintf ( ptr, "%d, %d, %d ", r, g, b );
将数据格式化输出到文件Log.txt中

#5


我现在是假设有一个20*15的24bit的图片,读取它的图像数据,并以文本文档保存。问什么要交换r和b的值?

#6


但是一般的图片都是1024*768的,如果我把上面的程序改了。数字换成1024*768,根本不能运行。这是为什么?

#7


你也可以交换r g的值或者b g的值,甚至异或一个值再保存到文件,反正再读出来的时候遵循类似的规则再还原就是
引用 5 楼 ericdjl 的回复:
我现在是假设有一个20*15的24bit的图片,读取它的图像数据,并以文本文档保存。问什么要交换r和b的值?

#8


你说的不能运行是什么概念?报错?或者是有什么其它现象?
引用 6 楼 ericdjl 的回复:
但是一般的图片都是1024*768的,如果我把上面的程序改了。数字换成1024*768,根本不能运行。这是为什么?

#9


不是报错,没有错误。调试也正常,但是,运行的时候,直接谈出来一个警告。然后就没有了。不能运行。

#10


引用 5 楼 ericdjl 的回复:
我现在是假设有一个20*15的24bit的图片,读取它的图像数据,并以文本文档保存。问什么要交换r和b的值?
你这个程序做的事情不是这样的。它是读取到图像数据,然后以蓝、绿、红数值的方式保存到文件里。

程序设计得很奇怪,就算要这么做也用不着到这些交换操作,直接在fprintf的参数表里改变位置多简单哪?

至于你改变参数后失败的问题,要贴出改变参数后的代码才能判断为什么出错。

#11


"弹出来的警告"在目前这个阶段也算是错误哎
引用 9 楼 ericdjl 的回复:
不是报错,没有错误。调试也正常,但是,运行的时候,直接谈出来一个警告。然后就没有了。不能运行。

#12


哦,我把图片给你发过去。[img=http://C:\Documents and Settings\hayafei\桌面][/img]

#13


引用 12 楼 ericdjl 的回复:
哦,我把图片给你发过去。
你放自己硬盘上的图片我们没法看见的

#14


那我怎么给你穿过去。最后面的我把上面写的给你写上:应用程序发生异常unknown software exception(0xc00000fd),位置0x0040b687.

#15


你还是把改过数据的源代码贴上来更好些。

#16


#include 
int main ( void )
{
char sourceImage[1024*768*3];
// 打开一文本文件
FILE *ptr = fopen ( "Log.txt", "w+" );

unsigned int x, y;
for ( y = 0; y < 768; y++ )
{
for ( x = 0; x < 1024*3; x +=3 )
{

unsigned char r = sourceImage[x + y*1024*3 + 0];
unsigned char g = sourceImage[x + y*1024*3 + 1];
unsigned char b = sourceImage[x + y*1024*3 + 2];

fprintf ( ptr, "%d, %d, %d ", r, g, b );
}
fprintf ( ptr, "\n" );
}
fclose ( ptr );
return 0;
}

 

#17


引用 1 楼 fcmsuck 的回复:
交换值

正确
fprintf ( ptr, "%d, %d, %d ", r, g, b );
格式化到ptr变量中

#18


char sourceImage[1024*768*3];这个数组定义得太大,超出了堆栈的范围了。

推荐阅读
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • Prim算法在处理稠密图时表现出色,尤其适用于边数远多于顶点数的情形。传统实现的时间复杂度为 \(O(n^2)\),但通过引入优先队列进行优化,可以在点数为 \(m\)、边数为 \(n\) 的情况下显著降低时间复杂度,提高算法效率。这种优化方法不仅能够加速最小生成树的构建过程,还能在大规模数据集上保持良好的性能表现。 ... [详细]
  • 在进行网络编程时,准确获取本地主机的IP地址是一项基本但重要的任务。Winsock作为20世纪90年代初由Microsoft与多家公司共同制定的Windows平台网络编程接口,为开发者提供了一套高效且易用的工具。通过Winsock,开发者可以轻松实现网络通信功能,并准确获取本地主机的IP地址,从而确保应用程序在网络环境中的稳定运行。此外,了解Winsock的工作原理及其API函数的使用方法,有助于提高开发效率和代码质量。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • CodeForces 722C 数组破坏算法解析与优化策略 ... [详细]
  • CCCCGPLT L2005: 集合相似度计算的双指针算法优化 ... [详细]
  • 2017广西邀请赛复盘:NWAFU全国邀请赛训练赛第八场
    本次训练赛(NWAFU全国邀请赛复盘之一)基于2017年广西邀请赛的赛题,重点解析了A、E、F、G等关键题目,旨在通过复盘帮助参赛者深入理解相关知识点和技术应用,为后续比赛提供宝贵经验。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 探讨 jBPM 数据库表结构设计的精要与实践
    探讨 jBPM 数据库表结构设计的精要与实践 ... [详细]
author-avatar
丁志翔64164
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有