想讓他換行 不過這個問題不曉得出在哪裡
這是我的程式碼
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <sys/stat.h>
int main(void)
{
    int arr[]={12,4,5,6};
    int a=12,b=16;
    int f1;  
    f1=open("C:\\Users\\lochieh\\Desktop\\dev c++\\c\\C HW\\ch12\\hw12_12.bin",O_WRONLY|O_CREAT|O_BINARY,S_IREAD); /* 開啟檔案 */
    
    if(f1!=-1)     /* 檔案開啟成功 */
    {
    	write(f1,arr,sizeof(arr)); /* 將arr陣列寫入f1 */
    	write(f1,&a,sizeof(a));    /* 將a寫入f1 */
    	write(f1,&b,sizeof(b));    /* 將b寫入f1 */
    	close(f1);                 /* 關閉檔案 */
    	printf("檔案開啟成功\n");
    	
	}
	else
	{
		printf("檔案開啟失敗!!\n");
	}
   
    system("pause");
	return 0;
}
另外 要是我把開啟成功的程式碼換成以下
printf("檔案開啟成功");
就會出錯 變成這樣
另一個問題是
寫了一個亂數寫入檔案的程式
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <fcntl.h>
#include <io.h>
#include <sys/stat.h>
#include <string.h>
int main(void)
{
    int f1;
	f1=open("C:\\Users\\lochieh\\Desktop\\dev c++\\c\\C Prog\\ch12\\rand.txt",O_WRONLY|O_CREAT|O_TEXT,S_IWRITE);
	if(f1!=-1) 
	{
		int i,arr[10];
		char str[3];
		srand(time(NULL));        /* 隨機變數種子 */
		for(i=0;i<10;i++)
		{
            arr[i]=(rand()%64)+1; /* 將隨機變數1~64設值給arr陣列 */
		}
		for(i=0;i<10;i++)
		{
			strcpy(str,itoa(arr[i],str,10));
			write(f1,str,sizeof(str));
		}
		close(f1);
		printf("檔案寫入完成!!\n");
	}
	else
	{
		printf("檔案開啟失敗\n");
	}
    
    system("pause");
	return 0;
}
可是在寫入檔案時,rand.txt裡面的內容有時候會變成亂碼
重新編譯有時候又變成正常的亂數
不明白是否有哪裡寫錯或是邏輯錯誤
還請大家指正 謝謝![]()
妳的程式表面上看起來沒有問題,應該是第2及第6行在輸入的時候,
不小心有按到控制字元,但是看不到,將第2及第6行刪掉,重新輸入一次。
如果不行將所有程式 copy 到 notepad++, 再 copy 回 dev c++ 重新編譯,
應該就會正常了。

感謝 我現在安裝notepad++試試看
我在notepad++重打過一遍了 不過還是一樣
這是devc++編譯器的問題嗎![]()
我在
printf("檔案開啟成功\n");
這段碼中改寫成
printf("檔案開啟完成\n");
問題就解決了 另外我在試了
將功這個字留下
在印出時會有類似的問題
我猜測是這個字有問題![]()
謝謝大大的幫忙
第二個問題
write(f1,str,sizeof(str));
應該是 strlen 不是 sizeof。
原來是要填入字節數 這個問題困擾很久了![]()
感謝大大幫我debug![]()
![]()
說到功這個字,
印象中以前曾經看過PHP的書寫到,
功在輸出的時候會出現問題,
(還有其他字,不過書上是寫這個字,我也只知道這個)
是編碼的問題,
不過如果使用UTF8編碼就不會有問題...
小魚
你說的是許功蓋(許蓋功)問題吧?
http://ponsonsun.blogspot.com/2009/04/big5.html