在弄进制转换的时候,主函数不加printf就崩溃是怎么回事
#include <stdlib.h>
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量
typedef struct none
{ int *top;
int *base;
int stacksize;
}stack;
void conv(int N,int i);
void CreatStack(stack &s);
void push(stack &s,int e);
void CreatStack(stack &s)//构造一个空栈
{
s.base=(int*)malloc(sizeof(int));
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
void push(stack &s,int e)//入栈
{
if(s.top-s.base>=s.stacksize)
{
s.base=(int*)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(int));
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
}
void pop(stack &s,int &e){
if(s.top==s.base) //判断栈是否为空,用e返回出栈的值
printf("11");
else e = *--s.top;
}
void conv(int N,int i)
{
stack s;
int e;
CreatStack(s);
while(N)
{
push(s,N%i);
N=N/i;
}
while(s.top!=s.base)
{
pop(s,e);
printf("%d",e);
}
}
void main()
{
int N;
scanf("%d",&N);
printf("\n");
conv(N,2); //进制转换
}
就是主函数那里,如果去掉printf就崩溃了,把printf放到其他地方也是崩溃,而在printf里随便打什么都可以,但是不打就不行,这printf有什么关系= =
相关推荐
ucrt_crash_on_printf:在_setmode(_fileno(stdout),_O_U8TEXT)之后,使用printf会使程序崩溃
ucrt_crash_on_printf:在_setmode(_fileno(stdout),_O_U8TEXT)之后,使用printf会使程序崩溃
C/C++进制转换与位宽转换实战:从位权原理到协议解析
进制转换是计算机数据表示的基础,任何数值都可按位权展开为多项式累加。在C/C++开发中,除了掌握十进制与二进制的互转,更关键的是理解不同位宽数据在转换时的内存行为与符号语义。标准库提供了printf、strtol和bitset等工具,能覆盖大多数格式化需求;而在嵌入式开发、网络协议解析等场景中,开发者常常需要手动实现移位、掩码和字节序处理。数据从窄位宽扩展到宽位宽时,必须区分零扩展与符号扩展,否则会引发难以排查的数值错误。大端与小端字节序的存在,也使得跨设备数据传输时必须显式组合或拆分字节。掌握位运算的基本
顺序栈与链栈实现进制转换:从除基取余到代码实战
数据结构是计算机科学的基石,而栈作为最基础的线性结构之一,其“后进先出”特性在解决特定顺序问题时尤为关键。进制转换(如十进制转二进制、八进制、十六进制)是程序员必备的基础算法,其核心原理“除基取余法”天然产生逆序的余数序列,这恰好与栈的存储特性完美契合。本文以C语言为载体,深入讲解顺序栈与链栈两种实现方式,从结构体定义、入栈出栈操作到进制转换函数的完整编写,并对比两者在内存布局、容量扩展及性能上的差异。通过详细测试用例和调试经验,帮助读者理解栈在算法工程中的实际应用,同时掌握进制转换的边界处理(如零、负数及
程序崩溃的时候可生成崩溃堆栈日志的库
以下是调用的方法,在主程序入口函数第一行动态加载异常捕获库,崩溃后可以在运行目录下生成如【进程名称.exception】的文件,可以看到崩溃的堆栈信息 void main() { //Install our crash handler HMODULE hCrashDLL = LoadLibrary("CrashHelper.dll"); if (hCrashDLL == NULL) { printf("Failed to load CrashHelper DLL, Error:%d\n", GetLastError()); return; } else { printf("load CrashHelper DLL ok \n"); } //TODO:开始用户的代码 }
浅析Linux下利用coredump技术追查进程崩溃原因
主要介绍了Linux下利用coredump技术追查进程崩溃原因,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下


