如何将char数组中的值与另一个char进行比较
Posted
技术标签:
【中文标题】如何将char数组中的值与另一个char进行比较【英文标题】:How to compare value in char array to another char 【发布时间】:2017-04-15 03:44:28 【问题描述】:我编写了一个程序,该程序进入一个文件并将 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;
【问题讨论】:
我没有尝试过你的代码,但是tmp
被正确初始化为正确的值,你可以说tmp[0] == 'H'
。 'H'
被转换为字符“H”的文字 ASCII 值,因此只需将该值与 tmp[0]
的 ASCII 值进行比较就足够了。
【参考方案1】:
您应该将数组[索引] 与字符进行比较。注意:字符用单引号表示。双引号用于字符串。
例如,
if(array[index] == 'H')
code goes here...
【讨论】:
谢谢,这实际上解决了我无法比较它们的问题。【参考方案2】:不太清楚您要做什么,也许使用 c++ 文件/数组/字符串原语会更容易。
这是 c++ 中的等价物:
#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;
在您的代码中,您将 char 传递给 strcmp:strcmp(tmp[0],"H")
这不会由 c++ 编译器编译。 strcmp 将两个字符串作为输入并进行比较。
比较单个字符:if (tmp[0] == 'H') ...
。
如果您想比较 tmp 是否等于 "H"
字符串:if (0 == strcmp(tmp, "H") ...
。
【讨论】:
感谢您提供如此详尽的答案,并深入了解为什么它给了我这个特定的错误。将其更改为 if(tmp[0] == 'H') 确实解决了我的问题。以上是关于如何将char数组中的值与另一个char进行比较的主要内容,如果未能解决你的问题,请参考以下文章
将一个表中的值与另一表中具有相同属性的值的平均值计算进行比较
PHP:如何将一个数组中的键与另一个数组中的值进行比较,并返回匹配项?