我编写了一个程序进入一个文件并将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;
}
答案 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"
。