您好我的代码如下
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]逐个从double数组中取两个数字并将其传递给fp_to_str()。我想要做的是将ddata []数组中的这些双数写入文本文件。
我已经注释了该行,以便在字符串的末尾添加值10。我错误地认为我必须在字符串的末尾添加一个空字符。 我仍然遇到同样的问题。有谁知道为什么?
答案 0 :(得分: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
答案 1 :(得分:0)
如果value_str
在包含fwrite
的行之前没有更改,则fp_to_str
必须返回NULL
(因为指针已初始化为NULL
而您报告该值不会改变)。 NULL
是fp_to_str
的有效返回值,还是可能表示错误?