c - 如果其中包含整数,如何获取c中字符串的长度

标签 c string sizeof

我熟悉 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 的大小,这是一个 inthttp://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/

相关文章:

c - XMMS2:设置标题更改通知

c - 双指针 - 得到意外的输出

java - Java中使用模式匹配查找不包含数字的字符串数据

java - 如何从 Java 中的字符串模板生成字符串?

c - "sizeof"的结果取决于括号的位置。为什么?

c - 在字符指针数组的情况下, 'array name' 是什么意思?

c - 在 ARM 上启动 linux 后运行应用程序

c - 在MSVC中无法查看外部库的源代码但有源代码

javascript - Javascript中有没有一种方法可以在字符串的字母之间插入字符(例如 "/")?例如JAVA --> J/A/V/A?

c - 用 malloc 分配的数组大小显示比预期少一