-1

您好我的代码如下

char name[100] ;
_getcwd(name, (size_t)sizeOfFileName);
strcat(name,"\\") ;
strcat(name, fileName) ;
char *value_str= NULL ;
file = fopen(name, "a+");
if(!file)
   printf("bad file name") ;
for(i = 0; i<fileSize ; i++)
 {
  value_str = fp_to_str(ddata[i]) ;
  strLength= strlen(value_str) ;
  value_str[strLength+1] = 10 ;
  num = strlen(value_str);
  count = fwrite(value_str, sizeof(char), num, file);
 }

我在将 value_str 的值写入 file 给出的文件时遇到问题。在到达包含 fwrite 的代码行之前,value_str 的值不会改变。然后它变为一些垃圾值。你能告诉我有什么问题吗?SizeOfFileName 早先被传递给函数。代码完美运行,直到它到达 fwrite 代码行,然后它的值才发生变化。并且一些垃圾值被写入文本文件。

函数 fp_to_str 是我自己在当前代码中的函数。它正确地返回我想要 value_str 的值。fp_to_str 所做的是将一个双精度数转换为一个字符数组,存储在 value_str 中。

一旦使用 fwrite 完成代码,它会将 value_str 中的正确数据更改为一些垃圾值。

ddata[i] 一个接一个地从双精度数组中取出双精度数并将其传递给 fp_to_str()。我想要做的是将 ddata[] 数组中的这些双数写入文本文件。

我已经注释了将值 10 添加到字符串末尾的行。我错误地认为我必须在字符串末尾添加一个空字符。我仍然有同样的问题。有谁知道为什么?

4

2 回答 2

2

除了阿德里安·麦卡锡所说的:

value_str = fp_to_str(ddata[i]) ;
strLength= strlen(value_str) ;
value_str[strLength+1] = 10 ;
num = strlen(value_str);

num将等于strLength这里,这让我觉得你不确定你在做什么。(你在做什么?)你已经将值10(魔术常量 - 这是一个换行符吗?使用'\n')添加到空终止符之后的空间。你的字符串是:

o  W  o  r  l  d  \0 \x10
于 2010-07-21T00:12:55.433 回答
0

如果value_str直到包含fwrite, 的行才发生变化,则fp_to_str必须返回NULL(因为指针已初始化为NULL并且您报告该值没有变化)。是来自NULL的有效返回值fp_to_str,还是可能表示错误?

于 2010-07-21T00:14:46.683 回答