【发布时间】:2014-12-18 06:55:14
【问题描述】:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char name[50];
int main()
{
FILE *fp;
fp = fopen("./account.txt","a+");
memset(name,'-',50);
scanf("%s",name);
printf("%s",name); // i get correctoutput
fprintf(fp,"%s",name); // I get wrong output
return 0;
}
在我的代码中我有
-- 全局声明
char name[50];
我主要使用
memset(name,'-',49);
并使用scanf 将值读入字符串。我得到两个不同的输出
//假设我将输入作为test
如果我使用
printf将 char 数组打印到监视器上,我会得到正确的输出为test如果我使用
fprintf并将 char 数组打印到文件上,我会得到错误的输出, 就像前 49 个字符为 '-' 然后是0然后是我输入的任何内容(在这种情况下为test)-------------------------------------------------0test
有人可以解释发生了什么吗?或者如何解决这些问题?
【问题讨论】:
-
与其描述代码的作用,不如发布代码。
-
当我使用您发布的代码(用分号替换
return 0之后的撇号)时,无论使用printf还是fprintf,它都会产生完全相同的输出。您的代码可能不是这里的代码吗?或者,您是否在开始之前删除了 account.txt(您的"a+"将添加到末尾,也许您之前有奇怪的字符串?)。 -
您的代码运行良好!
-
尝试删除您的文件并再次运行您的程序。自从您以附加模式打开文件后,您可能会看到以前运行的输出,