【发布时间】:2015-03-27 19:13:27
【问题描述】:
我已经查看了文档:
上面写着here:
文件成功打开后,您可以使用 fscanf() 读取文件或使用 fprintf() 写入文件。这些功能只是工作 像 scanf() 和 printf(),除了它们需要额外的第一个 参数,要读/写的文件的 FILE *。
因此,我这样编写代码,并确保包含一个条件语句以确保文件打开:
# include<stdio.h>
# include<stdlib.h>
void from_user(int*b){
b = malloc(10);
printf("please give me an integer");
scanf("%d",&b);
}
void main(){
FILE *fp;
int*ch = NULL;
from_user(ch);
fp = fopen("bfile.txt","w");
if (fp == NULL){
printf("the file did not open");
}
else {
printf("this is what you entered %d",*ch);
fprintf(fp,"%d",*ch);
fclose(fp);
free(ch);
}
}
我错了还是文档没有正确解释这一点?谢谢。
【问题讨论】:
-
我不明白你期望发生什么,除了引用的段落说什么?
-
您在
scanf内部使用from_user(&不应该存在)和一般的内存管理(指针值不会返回到main)是“错误的”。这与printf与fprintf无关。 -
您可能希望在打印时在文件中添加换行符。您是否尝试在文本编辑器中打开文件?
-
void main()应该是int main(void)。如果一本书、教程或讲师告诉您使用void main(),找一个更好的。为int*分配 10 个字节是没有意义的。你想要 oneint对象,所以malloc(sizeof (int))会更有意义 - 但malloc根本不需要,因为你已经有一个int对象,其地址被传递作为参数。除了你没有,因为你将ch初始化为NULL。试试:int ch; from_user(&ch);. -
您的
from_user函数不会修改ch-- 它不能,函数不能修改它们的参数(修改参数只会更新参数的本地副本)。跨度>
标签: c++ c linux file-io printf