我正在从第一行包含单词“hello”的文件中读取一行。然后我使用strcasecmp将它与“hello”进行比较,但它告诉我它仍然不同
char *line = NULL;
size_t len = 100;
printf("%s", argv[1]);
FILE * fp = fopen(argv[1], "r");
if (fp == NULL) {
printf("empty\n");
exit(0);
}
getline(&line, &len, fp);
if (strcasecmp(line, "hello") == 0) {
printf("same");
}
答案 0 :(得分:1)
如果字符串相同(除了大小写),strcasecmp将仅返回0,而不是第一个字符串以第二个字符串开始。
getline会在行尾读取换行符,所以如果你键入" hello"你进入的字符串" line"将是"你好\ n"。
答案 1 :(得分:0)
这是getline()
getline()
reads an entire line from stream, storing the address of the
buffer containing the text into *lineptr.
The buffer is null-terminated
and includes the newline character, if one was found.
请注意有关包含换行符的部分。
因此,要么限制比较的长度,要么更好,修剪新的线条char,使用类似的东西:
char * newline = NULL;
if( NULL != (newline = strchr( line, '\n' ) )
{ // then newline found
*newline = '\0';
}