2014-07-10 26 views
-4

我在下面放置我的程序。我試圖通過以下兩種方式給予不同的格式相同的文件名來打印屏幕上的文本文件的內容 -在C中使用fopen()指定文件的名稱時,/,//,,\的意義是什麼?

1.使用一個文件的硬編碼名稱

2.taking的通過用戶名的文件(用戶輸入地址)

#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(); 
} 

在硬編碼地址的情況下,該程序被打印文本文件的內容爲所有評論formats.It是示出消息

錯誤開口檔案!

當前硬編碼地址。


在用戶輸入的地址的情況下,我試圖爲這些 -

  1. d:\ cprog \爲trial.txt:文件內容被打印。

  2. D:\ cprog \\ trial.txt:打印文件內容。

  3. D:/cprog//trial.txt:打印文件內容。

  4. D:/ cprog/\ trial.txt:打印文件內容。

  5. D:/cprog/trial.txt:打印文件內容。

  6. d:\\ cprog \\爲trial.txt:無輸出

  7. d://cprog//trial.txt:無輸出

  8. d:\\ cprog \爲trial.txt :沒有輸出

  9. d://cprog/trial.txt:無輸出

爲什麼有在指定地址爲硬編碼和用戶輸入方法的格式不同? 也爲什麼有些格式顯示輸出,有些不在這兩種方法?在指定地址時,/,\,//,\,/ \有什麼意義?

+0

你的一半示例不能編譯。啓用警告以查明原因。 – usr2564301

+1

1和6是不同的結果相同的路徑......那怎麼樣? – dragosht

+1

它是'int main',而不是'void main'。 while(!feof())'一如既往是一個bug,它會循環一次額外的迭代。閱讀comp.lang.c常見問題以瞭解原因。 – Jens

回答

0

我認爲一個/是好的或\\是好的,但\是一個特殊的字符,因爲它用於轉義特殊字符。因此,\t(例如)是一個選項卡(在源文件中)。如果用戶鍵入'\ t',則會得到相當於'\'和't'的值。

+0

爲什麼是RW?這是爲了讀/寫,而rt是爲了在文本模式下閱讀。 – Jens

+0

@Jens我以前從未見過「rt」。編輯。 –

相關問題