【发布时间】:2014-07-10 06:37:34
【问题描述】:
我把我的程序放在下面。我正在尝试通过使用两种方式之一以不同格式给出相同文件的名称来在屏幕上打印文本文件的内容 -
1.使用硬编码的文件名
2.用户取文件名(用户输入地址)
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
FILE *fp;
char ch;
// char str[30] = "d:\CPRog//triAl.tXT";
// char str[30] = "d:\Cprog//triAl.txt";
// char str[30] = "d:\CPRog\\triAl.tXT";
// char str[30] = "d:/\CPROG//triAl.tXT";
// char str[30] = "d:\\CPRog\\triAl.tXT";
// char str[30] = "d:/CPRog//triAl.tXT";
// char str[30] = "d:\CPRog/triAl.tXT";
// char str[30] = "d:/CPRog/triAl.tXT";
// char str[30] = "d:\CPRog/triAl.tXT";
char str[30] = "D:\Cprog\trial.txt";
clrscr();
// printf("\nEnter path of file to open : ");
// gets(str);
fp = fopen(str,"rt");
if(fp == NULL)
{
printf("\nError in opening file !");
getch();
exit();
}
while(!feof(fp))
{
ch = fgetc(fp);
fputc(ch,stdout); // Print the character on screen.
}
fclose(fp);
getch();
}
如果是硬编码地址,程序正在打印所有注释格式的文本文件内容。它正在显示消息
打开文件出错!
对于当前的硬编码地址。
如果是用户输入地址,我尝试了这些-
D:\cprog\trial.txt : 打印文件内容。
D:\cprog\\trial.txt : 打印文件内容。
D:/cprog//trial.txt : 打印文件内容。
D:/cprog/\trial.txt : 打印文件内容。
D:/cprog/trial.txt : 打印文件内容。
D:\\cprog\\trial.txt:无输出
D://cprog//trial.txt:无输出
D:\\cprog\trial.txt : 无输出
D://cprog/trial.txt:无输出
为什么硬编码和用户输入法的地址指定格式不同? 另外,为什么有些格式显示输出而有些格式不在这两种方法中?指定地址时/,\,//,\,/\有什么意义?
【问题讨论】:
-
您的示例中有一半无法编译。启用警告以了解原因。
-
1 和 6 是相同的路径,但结果不同......那怎么样?
-
这是
int main,而不是void main。while(!feof())一如既往地是一个错误,它循环了一个额外的迭代。阅读 comp.lang.c 常见问题以了解原因。 -
@dragosht : 抱歉,现在我已经进行了更改。
-
@Jens : 如果我使用
int main(),那么我应该使用return 0而不是getch()!我说得对吗?(我不知道原因'为什么?'-Why@ 987654328@需要return 0?main()返回0给谁?)我会阅读你建议的FAQ。谢谢!