我正在尝试编写一个程序,类似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)
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),那么它们都不是.所以这不会奏效.