所以我偶然发现了一个问题(最终通过实验解决了问题)并检查元组中是否存在字符串。
struct Person{
char* Name;
char* Gender;
};
struct Person person[100];
void readAllFromFile(){
FILE * fp;
char currentLine[256];
int fd;
if((fp = fopen ("test.txt", "r"))==NULL){
perror("Can not open");
fclose(fp);
return;
}
int currentLineNo=0;
char *items;
while (fgets(currentLine, sizeof(currentLine), fp)) {
items=strtok(currentLine,",");
struct Person tempPerson;
int iter=0;
while(items != NULL)
{
if(iter==0){
tempPerson.Name=items;
}
else {
tempPerson.Gender=items;
}
iter++;
items=strtok(NULL,",");
}
person[currentLineNo]=tempPerson;
currentLineNo++;
}
/*Printing element of the array*/
int i;
for(i=0;i<currentLineNo;i++){
printf("%s\n",person[i].Name);
}
fclose(fp);
}
int main() {
readAllFromFile();
return 0;
}
评估if 'String1' or 'String2' in tuple:
即使两者都不在元组中。
True
给了我想要的结果。
第一个变体实际评估了什么?
编辑:@ Cricket_007 ...您在欺诈报告中指出的问题并没有涵盖if 'String1' in tuple or 'String2' in tuple:
,因此我认为这不是一个骗局。
答案 0 :(得分:2)
区别在于in
容器检查,
如果您违反此声明:if 'String1' or 'String2' in tuple:
'String1'
返回True,因为只要字符串不为空,测试str()
就会返回True
'String2' in tuple
仅在元组中包含字符串时返回True
第一个条件始终返回 True 。
第二行首先测试in
包含的两个变量,然后在结果之间执行or