【问题标题】:gcc compiler complain about test[0] error from char* test;gcc 编译器抱怨来自 char* 测试的 test[0] 错误;
【发布时间】:2011-11-17 04:29:06
【问题描述】:

我只是这样写:

char* test="test";
printf("%s",test[0]);

它说段错误; 然后我改为 printf("%s",&test[0]); 错误消失了 但这不是我想要的; 控制台打印:“测试” 如何从该指针中获取值“t”?

【问题讨论】:

    标签: c++ c arrays pointers char


    【解决方案1】:

    如果你只想要t,你应该这样做:

    printf("%c",test[0]);
    

    %c 格式,将打印一个 char

    %s 将打印整个以空字符结尾的字符串。

    【讨论】:

    • 请记住 test[0] 返回一个字符 - 正如 Mystical 所说 %s 会将其视为指向字符串的指针 - 一个人为的例子是第一个字符是“A”,这是 65 in ascii - 当您使用 %s 时,它试图找到位于内存地址 0x41 的字符串指针 - 99.99% 可能超出您自己代码的范围
    • 这样更干净谢谢,当我与这个单字符测试[0] 进行比较时,我也注意到我需要写的东西:=='t' 而不是 =="t",为什么?
    • 那是因为't' 是一个字符。而"t" 是一个 c 字符串。您无法将 char 与 c 字符串进行比较。
    【解决方案2】:

    您应该使用 %c 而不是 %s,因为 %s 需要一个 char * 并打印到 \0。 %c 只取一个字符。

    【讨论】:

      猜你喜欢
      • 2011-01-08
      • 2015-06-01
      • 2012-05-04
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-06
      相关资源
      最近更新 更多