如何将char数组中的值与另一个char进行比较

时间:2017-04-15 03:44:29

标签: c++ c arrays

我编写了一个程序进入一个文件并将txt文件的每一行复制到一个数组的索引中,然后我将该行的txt文件放入另一个按字符分隔行的数组中。我正在尝试将字符数组中的第一个索引与“H”进行比较,但我无法做到。如何将数组中的字符与“H”之类的另一个字符进行比较。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[]) {
    char const* const fileName = argv[1];
    FILE* file = fopen(fileName, "r");
    int i = 0;
    char line[256];
    char* str[256];
    while (fgets(line, sizeof(line), file)) {
            str[i]=strdup(line);
            strcpy(str[i],line);
            i++;
    }
    char tmp[256];
    memcpy(tmp, str[0],strlen(str[0])+1);
    if(strcmp(tmp[0],"H") == 0){
            printf("%s","is h"); 
    }else{
            printf("%s","not h");
    }
    fclose(file);
    return 0;
}

2 个答案:

答案 0 :(得分:1)

您应该将数组[index]与char进行比较。注意:字符用单引号表示。双引号用于字符串。

例如,

if(array[index] == 'H')
    code goes here...

答案 1 :(得分:0)

您不太清楚自己要做什么,也许您可​​以更轻松地使用c ++文件/数组/字符串基元。

这里是c ++中的等价物:

$("button").click(function(){
 $('html,body').animate({
scrollTop:$(".*specific div*").offset().top},
'slow')
 });

在你的代码中,你将一个char传递给strcmp:#include <fstream> #include <iostream> #include <string> #include <vector> using namespace std; int main(int argc, char* argv[]) { ifstream fl(argv[1]); // create file stream string s; vector<string> lines; while (getline(fl, s)) // while getline from input file stream succeeds lines.push_back(s); // add each read line to vector of strings string tmp = lines[0]; // first line if (tmp[0] == 'H') // compare first character of string `tmp` cout << "is h" << endl; else cout << "not h" << endl; } 这不会被c ++编译器编译。 strcmp将两个字符串作为输入并进行比较。

比较个别字符:strcmp(tmp[0],"H")

如果你想比较tmp是否等于if (tmp[0] == 'H') { ... }字符串:"H"