怪哉,怪哉,夜壶扛盖盖,有人见过吗?(编程技术类)

dchg2000 2005-03-31 09:57:39
代码是标准I/O写的,
在VC下OK,运行很好
在LINUX下运行就“段错误”
^_^

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

int get_input(const char* ask, char** opts, int len, char* result)
{
int i;
int loop = 3;

while ( loop-- ) {

printf("%s ", ask);
for (i = 0; i < len; i++) {
printf("%s ", opts[i]);
}
printf("? ");
printf("[%s]: ", opts[0]);
gets(result);
if ( strcmp(result, "") == 0 ) { /* default */
strcpy(result, opts[0]);
return 0;
}

for (i = 0; i < len; i++) {
if ( strcmp(result, opts[i]) == 0 ) {
return i;
}
}
}

return -1;
}

int main(int argc, char **argv)
{
int i;
int rs;
FILE* fp;
char sn[17];
char** opts;
char result[128];
char digest[33];

opts = (char**) malloc(sizeof(char*) * 20);
for (i = 0; i < 20; i++) {
opts[i] = (char*)malloc(30);
}
strcpy(opts[0], "1000");
strcpy(opts[1], "2000");
strcpy(opts[2], "3000");

if ( (fp = fopen("sn.txt", "rb")) != NULL ) {
fgets(sn,17,fp);
fclose(fp);
}
else {
printf("can't find file sn.txt\n");
return -1;
}
sn[16] = '\0';
printf("Read sn.txt: %s\n", sn);
//fclose(fp);

if ( (fp = fopen("serial.txt", "wb")) == NULL ) {
printf("can't create file serial.txt\n");
return -1;
}
fprintf(fp, "License\n");
fprintf(fp, "Please not modify this file and binary transfers.\n");
fprintf(fp, "--------------------- BEGIN -------------------------\n");
fprintf(fp, "SN %s\n", sn);
rs = get_input("Please input version", opts, 3, result);
if ( rs < 0 ) { printf("invalid input, exit ...\n"); return -1; }
fprintf(fp, "VERSION %s\n", result);
strcpy(digest, "1234567890asdfghjkkkkk");
fprintf(fp, "%s\n", digest);

fprintf(fp, "--------------------- END ---------------------------\n");
fclose(fp);
printf("Generate serial.txt file successfully\n", sn);
return 0;
}
...全文
161 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jellen 2005-04-01
  • 打赏
  • 举报
回复
把你程序中的gets(result)用fgets()函数代替,Linux对堆栈溢出很小心(gets()函数没有保护)
Sword_Sharp 2005-03-31
  • 打赏
  • 举报
回复
有没有产生core文件?

gdb 程序命 core

看看
hs_guanqi 2005-03-31
  • 打赏
  • 举报
回复
没错啊,
dchg2000 2005-03-31
  • 打赏
  • 举报
回复
//fclose(fp);
改为
fclose(fp);
dchg2000 2005-03-31
  • 打赏
  • 举报
回复
有人遇见过吗?
呵呵!
很还改的啊
dchg2000 2005-03-31
  • 打赏
  • 举报
回复
sn.txt
03L9O0871M1459N1
serial.txt
License
Please not modify this file and binary transfers.
--------------------- BEGIN -------------------------
SN 03L9O0871M1459N1
VERSION 1000
1234567890asdfghjkkkkk
--------------------- END ---------------------------
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 过采样与欠采样构成了数字信号处理领域中两种基础的采样策略,它们在工程实践应用时各自展现出独特的长处与短处及适用情境。以下将深入阐释这两种采样方法的运作机制,并对它们在实际操作中的区别进行细致对比。 我们首先阐释过采样的核心概念。过采样(Oversampling)一般是指运用高于必要标准频率对模拟信号实施采样。举例而言,当信号频率为70MHz且信号带宽为20MHz时,依据奈奎斯特采样准则,理论上采样频率只需略高于40MHz(即信号带宽频率的两倍)即可达成无失真采样。然而,在现实操作中,系统构造者常常会采用超过140MSPS(每秒百万次采样)的采样速率,这通常超出理论所需。过采样的主要不利之处涵:提升ADC输出数据速率,引发FPGA的时序挑战;增大功耗、ADC及FPGA的制造成本。尽管存在这些不足,过采样依然具备其有利之处,例如可提供处理增益、频率规划的伸缩性以及能够处理更宽的信号带宽。 接下来,我们探讨欠采样的基本原理。欠采样(Undersampling)是指以低于理论标准频率对信号进行采样,这在处理高输入信号频率时尤为有效。例如,针对70MHz的中频(IF)信号,通过欠采样能够采用低于40MHz的采样频率进行采样,从而将数据速率降至FPGA,减少时序挑战,节省能量消耗和成本。实现欠采样的关键设计考量在于它能够在系统设计中达成所需的ADC动态性能。 欠采样的优势体现为能够简化硬件构造,比如降低对高速数据捕获的需求,并且在设计条件允许时,可选用较慢的ADC来削减成本。然而,欠采样技术也存在其局限性,例如在ADC的非理想表现可能导致非线性失真,诸如二阶(HD2)和三阶(HD3)谐...
内容概要:本文系统介绍了基于TI TMS320C5416芯片设计IIR带阻和陷波滤波器的方法,重点采用双线性变换法(BLT)和极点-零点配置法进行数字滤波器的设计。文档涵滤波器设计的理论基础、关键参数设定、Matlab代码实现流程以及在DSP硬件平台上的部署思路,帮助读者掌握从模拟原型设计到数字映射,再到硬件实现的完整技术链条。同时强调通过Matlab仿真验证滤波器频率响应特性,并指导如何将算法移植至TMS320C5416平台实现实际信号处理功能; 适合人群:具备数字信号处理基础理论知识和Matlab编程能力,从事通信系统、音频处理、嵌入式开发等相关领域的研究生及工程技术人员; 使用场景及目标:①深入理解IIR滤波器设计的核心原理,特别是双线性变换法避免频率混叠的优势;②掌握通过极点-零点布局设计特定频率响应的带阻与陷波滤波器;③实现对特定干扰频率的有效抑制,如工频干扰去除;④完成从Matlab算法仿真到TMS320C5416 DSP平台的代码移植与实时验证; 阅读建议:建议读者结合所提供的Matlab代码动手实践滤波器设计全过程,深入理解每一步背后的数学推导与物理意义,并尝试调整滤波器参数观察性能变化,最终将设计成果部署到实际DSP系统中进行测试与优化。

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧