我熟悉 C 中的 sizeof
操作,但是当我将它用于字符串 "1234abcd"
时,它只返回 4
,我假设这是最后 4 个字符。
那么我怎样才能将它变成一个大小为 8 的字符串呢?
具体代码如下:
FILE *in_file;
in_file = fopen(filename, "r");
if (in_file == NULL) {
printf("File does not exist\n");
return 1;
}
int val_to_inspect = 0;
fscanf(in_file, "%x", &val_to_inspect);
while (val_to_inspect != 0) {
printf("%x", val_to_inspect);
int length = sizeof val_to_inspect;
printf("%d", length);
同样,从文件中读取的字符串是 "1234abcd"
,只是为了澄清。
最佳答案
这里有几个问题:
sizeof
运算符返回对象的大小。在这种情况下,它返回 val_to_inspect
的大小,这是一个 int
。
http://en.cppreference.com/w/cpp/language/sizeof
fscanf
从流中读取并解释它。您只扫描一个整数 ("%x"),而不是一个字符串。
http://en.cppreference.com/w/cpp/io/c/fscanf
最后,如果您确实有一个以 nil 结尾的字符串,要获得它的长度,您可以使用 strlen()
。
关于c - 如果其中包含整数,如何获取c中字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46242277/