qt printf I64d
时间: 2023-12-11 07:33:55 浏览: 127
根据提供的引用内容,可以使用以下步骤在QT中使用printf打印I64d:
1. 引入文件
```c++
#include <stdio.h>
```
2. 使用printf()打印I64d
```c++
long long num = 1234567890123456;
printf("%I64d", num);
```
3. 清空缓冲区
```c++
fflush(stdout);
```
注意:在QT中使用printf()打印I64d时,需要使用"%I64d"格式化符号,而不是"%lld"。
相关问题
简析代码:void FCFS(PCB pro[], int num) { int time,done_time; int i,count,tt,pronum; float sum_T_time,sum_QT_time; PCB *curpro,*temp_PCB; printf("\n\t\t\t\t\t先来先服务算法进程调度模拟\n\n"); printf("\t————————————————————————————————————————————————\n"); count=0; PCB pro2[100]; sortWithEnterTime(pro, num); PCBQueue* queue = (PCBQueue*)malloc(sizeof(PCBQueue)); Queueinit(queue); EnterQueue(queue, &pro[0]); time = pro[0].arrivetime; pronum = 1; sum_T_time = 0, sum_QT_time = 0; while (queue->size > 0) { curpro = poll(queue); if (time < curpro->arrivetime){ time = curpro->arrivetime; } done_time = time + curpro->running_time; curpro->start_time=time; curpro->done_time=done_time; curpro->zztime = done_time - curpro->arrivetime; curpro->dqzztime = curpro->zztime / curpro->running_time; sum_T_time += curpro->zztime; sum_QT_time += curpro->dqzztime; for (tt = time; tt <= done_time && pronum < num; tt++) { if (tt >= pro[pronum].arrivetime) { EnterQueue(queue, &pro[pronum]); pronum++; } } CopyProgram(&pro2[count],curpro); PrintRunningprogram(&pro2[count]); count++; if(queue->size!=0) { printf("\t就绪队列:\n"); printf("\t————————————————————————————————————————————————\n"); printf("\t进程 到达时间 服务时间 优先级\n"); temp_PCB=queue->firstProg->next; for(i=queue->size; i>0; i--) { printf("\t%s\t%d\t%d\t%d\n",temp_PCB->name,temp_PCB->arrivetime,temp_PCB->running_time,temp_PCB->priority); temp_PCB=temp_PCB->next; } printf("\t————————————————————————————————————————————————\n"); printf("\n\n\n"); } else { printf("\t无进程处于就绪状态!\n"); printf("\t————————————————————————————————————————————————\n\n\n"); } time += curpro->running_time; if (queue->siz
该函数是一个先来先服务(FCFS)的进程调度算法模拟。其输入参数包括一个进程控制块(PCB)数组和进程数量。该函数输出模拟的结果。
该函数的主要实现流程如下:
1. 按照进程的到达时间对进程进行排序。
2. 创建一个PCB队列,将第一个进程加入队列,并将当前时间设置为第一个进程的到达时间。
3. 对于队列中的每个进程,计算该进程的完成时间、开始时间、周转时间和带权周转时间,并将其加入一个新的PCB数组中(用于后续输出)。
4. 在计算当前进程完成后,将到达时间在当前时间之前的所有进程加入队列。
5. 输出当前正在运行的进程和就绪队列中的所有进程信息。
6. 重复步骤3-5直到队列为空。
其中,PCB结构体包括进程的名称、到达时间、服务时间、优先级、开始时间、完成时间、周转时间和带权周转时间等信息。Queueinit()函数用于初始化PCB队列,EnterQueue()函数用于将进程加入队列,poll()函数用于从队列中取出一个进程。
将这个代码转为QT#include "mat.h" int main() { MATFile *pmat;//指向mat文件的指针 const char **dir;//元素名列表 const char *file;//要打开的mat文件名 int ndir;//mat文件中的元素(矩阵、元胞)个数 mxArray cell1;//指向要读取的元胞数据的指针 mxArray mat1;//指向元胞中某个元素的指针 double a;//指向元胞中某个元素第一个数据的指针 int cellM,cellN,M,N; int count; int i,j; file="cellMat.mat"; //要打开的mat文件名 pmat = matOpen(file, "r");//打开文件,返回指向文件指针 if (pmat == NULL) { printf("打开mat文件失败!"); return 0; } //读取mat文件中的矩阵列表(返回mat中包含的元素的名字) dir = (const char **)matGetDir(pmat, &ndir); if (dir == NULL) { printf("读取mat文件失败!"); return 0; } //输出cellMat.mat中的元素数量 printf("%s文件中一共有%d个元素\n",file,ndir); //从打开的mat文件中(pamt)读取名字为dir[0]的元胞 //(返回指向该矩阵的指针,注意:MATLAB中的矩阵是按列优先存储到) cell1 = matGetVariable(pmat,dir[0]);//指向名字为dir[0]的元胞 cellM = (int)mxGetM(cell1);//获取元胞的行数 cellN = (int)mxGetN(cell1);//获取元胞的列数 //按列优先依次读取元胞中的数据 for(count=0;count<cellMcellM;count++) { mat1 = mxGetCell(cell1,count);//按列优先,指向元胞中的第count+1个元素 a = (double)mxGetData(mat1);//指向mat1中的第一个数据 M = (int)mxGetM(mat1);//获取mat1的行数 N = (int)mxGetN(mat1);//获取mat1的列数 printf("元素%d的维数为:(%d,%d)\n",count,M,N); for (i=0;i<M;i++) { for (j=0;j<N;j++) printf("%-5.4f ",a[jM+i]); printf("\n"); } } matClose(pmat);//关闭文件 return 0; }
转化为QT的代码如下:
```cpp
#include <QCoreApplication>
#include <QDebug>
#include <QFile>
#include "mat.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MATFile *pmat; //指向mat文件的指针
const char **dir; //元素名列表
const char *file; //要打开的mat文件名
int ndir; //mat文件中的元素(矩阵、元胞)个数
mxArray *cell1; //指向要读取的元胞数据的指针
mxArray *mat1; //指向元胞中某个元素的指针
double *a; //指向元胞中某个元素第一个数据的指针
int cellM, cellN, M, N;
int count;
int i, j;
file = "cellMat.mat"; //要打开的mat文件名
pmat = matOpen(file, "r"); //打开文件,返回指向文件指针
if (pmat == NULL) {
qDebug() << "打开mat文件失败!";
return a.exec();
}
//读取mat文件中的矩阵列表(返回mat中包含的元素的名字)
dir = (const char **)matGetDir(pmat, &ndir);
if (dir == NULL) {
qDebug() << "读取mat文件失败!";
return a.exec();
}
//输出cellMat.mat中的元素数量
qDebug() << file << "文件中一共有" << ndir << "个元素";
//从打开的mat文件中(pamt)读取名字为dir[0]的元胞
//(返回指向该矩阵的指针,注意:MATLAB中的矩阵是按列优先存储到)
cell1 = matGetVariable(pmat,dir[0]);//指向名字为dir[0]的元胞
cellM = (int)mxGetM(cell1);//获取元胞的行数
cellN = (int)mxGetN(cell1);//获取元胞的列数
//按列优先依次读取元胞中的数据
for(count = 0; count < cellM * cellN; count++) {
mat1 = mxGetCell(cell1, count);//按列优先,指向元胞中的第count+1个元素
a = mxGetPr(mat1);//指向mat1中的第一个数据
M = (int)mxGetM(mat1);//获取mat1的行数
N = (int)mxGetN(mat1);//获取mat1的列数
qDebug() << "元素" << count << "的维数为:(" << M << "," << N << ")";
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++)
qDebug() << a[j * M + i];
}
}
matClose(pmat);//关闭文件
return a.exec();
}
```
阅读全文