【发布时间】:2022-12-11 23:37:21
【问题描述】:
我想计算 (Mo) 中的彩色图像大小和 (Ko) 中的黑白图像大小,因此为此我使用了终端命令中过去的参数,即(图像长度和宽度)
这是我的代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main(int argc, char *argv[]) {
float resultKo, resultMo;
resultKo = ((int)argv[1] * (int)argv[2]) / (1024);
resultMo = (((int)argv[1] * (int)argv[2])/(1024 * 1024))*3;
printf("la taille de l'image en niveau de gris : %.2fko\n",resultKo);
printf("la taille de l'image en couleur : %.2fMo", resultMo);
return 0;
}
【问题讨论】:
-
argv[1] 是一个字符串,
char *。您正在将其转换为int。 -
argv[1]的类型为char *。您没有理由将该指针转换为int。这不会将字符串转换为整数。它会简单地转换(并且可能截断)指针本身的值。 -
使用函数
atoi或strtol将以文本形式存储的数字分别转换为int或long int。 -
除非您首先检查了
argc,以确保argv元素确实有效,否则切勿使用来自argv的任何元素。
标签: c