【问题标题】:How to flush string which is in structure?如何刷新结构中的字符串?
【发布时间】:2013-06-07 20:03:10
【问题描述】:

我的结构:

struct Data{
   char buffer[MAX_BUFF];
   int bufferPos;
};

我如何执行函数searchFile:

searchFile(outFile, logFile, category, keyword, srcName, &dat);

在函数searchFile 中,我想做类似fflush(dat->buffer) 的事情。不幸的是,这给了我一个错误。我也试过str(dat->buffer, "")dat->buffer[0] = '\0',但这似乎并没有清除我的字符串dat.buffer。有什么想法吗?

完整代码:http://pastebin.com/aHWPLqPx

【问题讨论】:

  • 在这种情况下,“刷新”是什么意思?是否要将零写入缓冲区(memsetbzero)?
  • 我在 dat.buffer 中保存了一个字符串。我想要做的是从缓冲区中完全删除该字符串,这样当我说 printf("%s", dar.buffer) 时它什么也不会打印出来。
  • 你上一个例子应该已经完成​​了,尽管它会留下大部分(除了第一个char)字符串仍然存在于dat->buffer占用的内存中。

标签: c pointers buffer structure flush


【解决方案1】:

假设您想从缓冲区中删除任何有意义的数据,您将用零覆盖整个数据并重置bufferPos

类似

memset(dat->buffer,0,MAX_BUFF);
dat->bufferPos=0;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2019-09-11
    • 2018-06-30
    • 2012-04-27
    • 2021-01-13
    • 1970-01-01
    相关资源
    最近更新 更多