我有一个看起来像这样的缓冲区:
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
部分,我可以看到我的单词和定义+缓冲区中剩下的所有内容。
答案 0 :(得分:2)
这是因为您更改 found
指向您找到的换行符,这意味着found
指向包含换行符和终结符的字符串部分。你需要使用不同的变量。
答案 1 :(得分:0)
如果设置*(found+1)=0
然后调用printf(found)
,则使用长度为零的字符串调用printf
。在这种情况下,没有看到任何输出是预期的行为。
也许你想说printf(buffer)
?