我正在从文本文件中读取并且有一个模式。我目前正在使用令牌的帮助下阅读该文件。如果在完成模式后有任何空格或行中断,则有许多行和模式中断。这是我到目前为止所尝试的:
char newLine[10];
strcpy(newLine, "\n");
int stringValue;
....
*readfromfile*
{
...
stringValue = strcmp(token, newLine);
if(stringValue == 0)
{
...
因此,如果在我希望if语句通过的行后面有一个新行或空格。有谁知道如何解决这个问题?是不是令牌不能获得角色," "和" \ n"。如果是这样,我该怎么做才能解决它?
答案 0 :(得分:0)
在致电trim(newline)
之前,只需strcmp()
。 trim()
将删除字符串开头或结尾处的任何空格。
您可以在C in this question中找到一个示例。
还有另外一种方法:如果newLine
末尾有空白而您不想使用strcmp()
进行比较,请改用strncmp()
(长度为token
}})。
答案 1 :(得分:0)
根据你的评论,你首先阅读缓冲区,然后想删除字符,然后按照下面的例子进行操作(假设你的缓冲区大小为1024)
int RemoveTokens(char *string)
{
char buf[1024] = {0};
int i = 0;
int j = 0;
strncpy(buf, string, 1024);
memset(string, 0x00, 1024);
for (i=0; i<1024; i++)
{
if (' ' != buf[i] && '\n' != buf[i])
{
string[j] = buf[i];
j++;
}
}
}
希望它能帮助您轻松完成。 :d