从C中的文本文件中读取,在模式中查找新行和空格

时间:2014-09-29 07:47:27

标签: c token

我正在从文本文件中读取并且有一个模式。我目前正在使用令牌的帮助下阅读该文件。如果在完成模式后有任何空格或行中断,则有许多行和模式中断。这是我到目前为止所尝试的:

char newLine[10];
strcpy(newLine, "\n");
int stringValue;
....
*readfromfile*
{
    ...
    stringValue = strcmp(token, newLine);
    if(stringValue == 0)
    {
        ...

因此,如果在我希望if语句通过的行后面有一个新行或空格。有谁知道如何解决这个问题?是不是令牌不能获得角色," "和" \ n"。如果是这样,我该怎么做才能解决它?

2 个答案:

答案 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