想讓他換行 不過這個問題不曉得出在哪裡
這是我的程式碼
#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