iT邦幫忙

0

資料處理的問題

不好意思打擾大家了
小弟剛學c資料處理這塊
只是課本上面是舊版的windows
而我使用的是win10
無法比對這樣子
所以想請問大家哪裡需要修改的
因為我檔案一直開不起來QQ
感謝大大

附圖:
https://ithelp.ithome.com.tw/upload/images/20180921/20111148u4EPVR3OWs.jpg

附程式碼:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ROW 6
#define COLUMN 25
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
FILE 	*outptr;
short row,column;
char data[][COLUMN]= {"1. fputc 函數測試!! \n ",
					"2 . \n",
					"3. \n",
					"4 . \n",
					"5 .!! \n",
					"6. ~~\n",



                      } ;
                outptr= fopen("D:/C_pratice/DATA_FPUTC.TXT","w");
    if(outptr!=NULL)
    {
    	for(row=0;row<ROW;row++)
    	for(column =0 ;column<strlen(data[row]);column++)
		fputc(data[row][column],outptr);
		fclose(outptr);
		printf("以fputc將字元資料寫入完畢!!\n\n檔案路徑與名稱");    
	}
	else
	printf("\7\7開檔失敗");
	return 0;
}
Homura iT邦高手 1 級 ‧ 2018-09-21 10:11:24 檢舉
我跑起來很正常耶@@

2 個回答

0
wwx
iT邦好手 1 級 ‧ 2018-09-21 10:24:20

fopen那邊,檔名路徑的斜線要改用兩次反斜線

"D:\\C_pratice\\DATA_FPUTC.TXT"

反斜線在C中的字串裏有其他意義,
就像範例中有用到
反斜線n - 代表換行
反斜線7 - 代表嗶一聲
反斜線反斜線 - 就是代表 一個反斜線

看更多先前的回應...收起先前的回應...
ab9988565 iT邦新手 5 級 ‧ 2018-09-21 10:40:12 檢舉

只是課本有說可以使用 /或者 \兩種方式耶?
謝謝大大回答

youarefat iT邦新手 5 級 ‧ 2018-09-21 16:18:55 檢舉

windows的路徑斜線跟人家不一樣

wwx iT邦好手 1 級 ‧ 2018-09-22 06:23:55 檢舉

有兩種方式但是要看環境使用
unix/linux/mac等用斜線
windows用反斜線

但是用斜線的作業系統通常會把反斜線自動改斜線
變成好像都可以,就像瀏覽器打網址那樣

ab9988565 iT邦新手 5 級 ‧ 2018-09-23 14:14:41 檢舉

抱歉這麼久才回復
我試過了還是沒辦法...

ab9988565 iT邦新手 5 級 ‧ 2018-09-23 14:16:47 檢舉

https://ithelp.ithome.com.tw/upload/images/20180923/20111148dZgB2NT7q4.jpg

wwx iT邦好手 1 級 ‧ 2018-09-24 13:02:06 檢舉

因為fopen不會自動建立不存在的資料夾,
要先確定 D:\C_pratice 這個資料夾是否存在

因為圖片中執行檔為
D:\C_practice\Chapter7_practice.exe
所以看起來 D:\C_practice 這個資料夾是存在的

但程式中是寫 D:\C_pratice
和exe位置的 D:\C_practice 真的很像
其實差了一個 c 字母喔~
所以是程式要改一下加個 c ,
還是自己另外先建立好 D:\C_pratice 這資料夾,

這樣,問題應該就可以解決了

0
CWKSC
iT邦新手 5 級 ‧ 2018-10-01 13:29:49

呃......打錯字了。
"D:/C_pratice/DATA_FPUTC.TXT" -> "D:/C_practice/DATA_FPUTC.TXT"
還有麻煩縮排一下,提高可讀性。OWO

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ROW 6
#define COLUMN 25

int main(int argc, char *argv[]) {
    FILE *outptr;
    //把 row, column變數嵌在for loop中,方便。
    char data[][COLUMN] = {"1. fputc 函數測試!! \n ",
                          "2 . \n",
                          "3. \n",
                          "4 . \n",
                          "5 .!! \n",
                          "6. ~~\n"};  // <- 源代碼中這裏多了一個逗號。
    outptr = fopen("D:/C_practice/DATA_FPUTC.TXT", "w");  //這段打錯字。
    if(outptr != NULL){
        for(short row = 0; row < ROW; row++){
            for(short column = 0; column < strlen(data[row]); column++){
                fputc(data[row][column], outptr);
            }
        }
		fclose(outptr);
		printf("以fputc將字元資料寫入完畢!!\n\n");  //太長放下去了
        printf("檔案路徑與名稱");  //這裏是會把檔案路徑與名稱列印出來??
        
	}else{
        printf("\7\7開檔失敗");  //ASCII中 \7 代表響鈴。
    }
    system("pause");  //在某些IDE中,你不加這一段也會幫你自動暫停。
                      //最好/應該自己補上。
	return 0;
}

好習慣要從小培養。

注意一下windows系統中,檔案名稱大小寫不分。

我要發表回答

立即登入回答