查找通过命令行参数传递的类型的大小

Tah*_*een -1 c

我正在尝试编写一个程序,类似int char的类型通过命令行参数传递,然后sizeof用于打印字节

我编写了部分代码,如果有人可以完成内部的写法和内容 sizeof

如果我写argv[loop]它是一个问题,因为它是一个字符串而不是一个类型

#include <stdio.h>

int main(int argc, char *argv[]) {
 if (argc > 1) {
  for (int loop = 1; loop <= argc; loop++) {
     printf("%s bytes are %d", argv[loop], sizeof)
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

use*_*738 7

sizeof在这里帮不了你 因为你只会得到sizeof(char*)它没有别的.

那么这一切都让数组char*所以他们每个人都会成为char*唉,没有办法可以知道它是否int或float直接.因为你得到的只是char每个参数的空终止数组.

如果您想知道每个参数字符串的使用时间strlen().

嘿,如果您需要存储获取该信息,我可以告诉您一个方案

./a.out -f 1.32 -i 123 -s "ok"
Run Code Online (Sandbox Code Playgroud)

现在你知道-f意味着你会期待一个float.相应地解析它并且开心.你必须设计这样的程序.

如果你的意图是这样的话

./a.out int char
Run Code Online (Sandbox Code Playgroud)

然后,你将打印sizeof int和char好那么有没有办法做到这一点.

sizeof运算符产生其操作数的大小(以字节为单位),该操作数可以是表达式或类型的带括号的名称.大小由操作数的类型确定.结果是整数.如果操作数的类型是可变长度数组类型,则计算操作数; 否则,不评估操作数,结果是整数常量.

好吧,如果我们传递空终止字符串("int","float"to sizeof),那么它们都不是.所以这不会奏效.