裁剪一个字符串

时间:2013-11-29 07:49:26

标签: c

我有一个看起来像这样的缓冲区:

char *buffer;

缓冲区的内容如下所示:

apple; apple fruit \t data \n
apple tree \t data \n
apple pie \t data \n
Holland; Netherlands; The Netherlands '\t' data \n
....

我想搜索其中一个词。

我可以在缓冲区找到这个词。但是,如果我正在寻找苹果,我最终会从苹果到缓冲区的末尾,苹果下面的所有行。它只是丢弃了上面的一切。所以当我点击\ n时,我想在数据末尾删除。

我试过了:

   // find the word.
char *found = strstr(buffer, word);

// try to keep the line containing the word and the data 
// but discard everything after '\n'
found = strchar(found, '\n');
*(found +1) = 0;

printf(found);

然后,当我尝试printf时,我根本不打印任何东西。所以,当我跑strchar时,我毁了一切。如果我注释掉strchar部分,我可以看到我的单词和定义+缓冲区中剩下的所有内容。

2 个答案:

答案 0 :(得分:2)

这是因为您更改 found指向您找到的换行符,这意味着found指向包含换行符和终结符的字符串部分。你需要使用不同的变量。

答案 1 :(得分:0)

如果设置*(found+1)=0然后调用printf(found),则使用长度为零的字符串调用printf。在这种情况下,没有看到任何输出是预期的行为。

也许你想说printf(buffer)