我正在尝试编写一个程序,将 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)
}
}
}
sizeof
在这里帮不了你。因为你只会得到sizeof(char*)
,仅此而已。
那么这一切都让数组char*
所以他们每个人都会成为char*
唉,没有办法可以知道它是否int
或float
直接。因为你得到的只是char
每个参数的空终止数组。
如果您想知道每个参数字符串的长度,请使用strlen()
.
嘿,如果你需要某种方式来存储获取这些信息,我可以告诉你一个方案
./a.out -f 1.32 -i 123 -s "ok"
现在你知道-f
意味着你会期待一个float
. 相应地解析它并快乐。不过,您必须像这样设计程序。
如果你的意图是这样
./a.out int char
然后你会打印sizeof
int
,char
然后没有办法做到这一点。
sizeof 运算符产生其操作数的大小(以字节为单位),它可以是一个表达式或一个类型的括号名称。大小由操作数的类型决定。结果是一个整数。如果操作数的类型是变长数组类型,则对操作数求值;否则,不计算操作数并且结果是整数常量。
好吧,如果我们传递空终止字符串(“int”,“float” to sizeof
),则它们都不是。所以这行不通。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句