从char数组中获取值

时间:2014-05-03 19:44:55

标签: c char

FILE *t;
t = fopen(argv[8], "r");
fgets(tmp, 2048, t);

我在每一行读到的东西都是这样的“l 23 23”字母和一些数字(int或float),取决于天气“l”是“a”“b”或“c”。

我已尝试但无法将tmp [0]与字母进行比较。

tmp[0] =="t"

我知道文件中肯定存在“t”,但总是给出false

如何比较它并提取后面的数字?

PS:根据tmp[0]的值,我知道每行的数量和类型数量。

2 个答案:

答案 0 :(得分:1)

如果你想比较一个这样的字符,请使用't',而不是"t"(单引号,而不是双引号)。

答案 1 :(得分:1)

如果您想将tmp中的第一个字符与字符'x'进行比较,请使用:

if (tmp[0] == 'x')
{
    ...
}

如果您想将tmp中的整个字符串与字符串"xyz"进行比较,请使用:

if (strcmp(tmp,"xyz") == 0)
{
    ...
}

幕后:

  • 当您在代码中使用双引号字符串时,编译器会将其替换为指向字符串将在运行时驻留的内存空间开头的指针。
  • 因此,通过tmp[0] == "t",您实际上是在尝试将单个字符(通常为8位数据)与内存地址(通常为32或64位数据,具体取决于您的系统)进行比较。