C语言调用文件问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 19:43:46
这是其中一段

void main()
{
char ch;
unsigned char s[N], test;
int i, j, k;
FILE *fp, *fpnew;

printf("\nPlease input a char:");
scanf("%c", &ch);

fp = fopen("asc16", "rb");
if (NULL == fp)
{
printf("file open error!");
exit(0);
}

fseek(fp, ch*N, SEEK_SET);

fread(s, N, sizeof(unsigned char), fp);

fp = fopen("asc16", "rb"); 中的asc16文件放在哪啊?

我不论放在哪都是file open error

这样放对么? fp =fopen("E:\\F\\ASC16" , "rb"); 把asc16放到E:\\F 下还是提示file open error

要注意大小写。
最好加上扩展名,你的文件中可能有不可见字符(如空格),而你在写代码时没注意到
其中if (NULL == fp)
{
printf("file open error!");
exit(0);
}
NULL不应放在前面(我猜的,也没看见过别人这样用)

那得看你的具体情况了,如果是VC环境中运行的话,是和源文件放在一起的。
如果直接双击运行.exe的话,是和exe在一起的。

实在不行你就用fopen("abc.dat","wb")生成一个文件看看它在哪儿就行了。

额.... 这位老兄看那本书入门的?
首先 现在新标准规定main函数最好不用void修饰了 虽然有很多编译器能通过void的修饰 但为了最大的兼容 最好用新标准
int main(void)
{
...
return 0;
}
unsigned char s[N], test;我才知道原来字符数组也可以用unsigned来限定啊
受教受教
额 你的asc16是个什么文件 请加上扩展名 我想就可以了
额 楼下是对的 该用双斜线 受教了
我想你的错误时在这里
fp = fopen("asc16", "rb");
rb是以读方式打开 只能打开以存在的文件 并且从中读取文件 你改为"wb"打开就可以了 其他的我没看了

如果只写文件名(也就是写成相对路径的形式),那么文件会到当前程序的目录中找(是保存生成后的可执行文件的目录,而不是源代码文件的目录)。

而且,文件名要写出完整的扩展名,不可省略。

其次,由于单斜线会和后面的字符一起被当作转义字符,所以在C程序中,一定要用双斜线,不要听某些自以为是的初学者的错误言论。

最后,与NULL写在前面无关,这样写是为了防止将==写成=导致运行时错误。

文件没有