我正在构建一个接收串行数据并将其保存到文件的程序。每行数据都有时间戳。在这段代码中,带时间戳的数据行是 s。
string s = get_timestamp();
cout << "input string named s is: " << s << "\n";
numChars = sizeof(s);
cout << "size is: " << numChars << "\n";
fwrite( &s, sizeof(char) , numChars , DATA_LOG);
打印语句输出
00000.27m,379named s is: 20130822.1141,00000.26m,379
size is: 28
您可以看到,由于某种原因,“名为 s 的输入字符串”似乎被覆盖了。不过,这并不是我真正关心的问题(尽管我不知道为什么会这样。)
我的主要问题是我的 fwrite 将垃圾保存到文件中。可以看到 numChars 和 string 是正确的。我试过用相同的垃圾结果代替“&s”、“static_cast(&s)”。有任何想法吗?