將一個名單讀入到結構體中,如果用fscanf %s的形式讀入的是亂碼!這個應該如何從txt文本中讀取漢字
uj5u.com熱心網友回復:
看你的檔案格式,另外貼出你的代碼吧uj5u.com熱心網友回復:
以二進制格式保存檔案,然后以二進制格式讀取試試看uj5u.com熱心網友回復:
#include<stdio.h>
#include<process.h>
#define MAX 1024
struct student
{
int no;
char name[30];
char dao[30];
}stu[29];
int main()
{
FILE *fp;
if((fp=fopen("C:\\Users\\47390\\Desktop\\名單.txt","r"))==NULL)
{
printf("定位失敗");
getchar();
exit(0);
}
int a[30]={0},i=0;
char str[30];
for(i=0;i<29;i++)
{
fscanf(fp,"%d %s",&a[i],&stu[i].name);
stu[i].no=a[i];
fgets(str,sizeof(str),fp);
printf("%d %s\n",a[i],stu[i].name );
}
return 0;
}
uj5u.com熱心網友回復:
謝謝提醒,第一次發帖沒經驗
uj5u.com熱心網友回復:
首先宣告我也不太懂哈。我也不怎么用控制臺。隨便說說你都寫到文本檔案里了,都是文本,再讀出來怎么可能是結構體?如果是UNICODE,需要在檔案頭先寫入0XFEFF,那樣就不會有亂碼了。
uj5u.com熱心網友回復:
文本檔案都是以字串的形式保存,先讀出字串,列印看看,保證讀出的資料正確。然后,轉換成需要的資料型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/82068.html
標籤:C語言
下一篇:函式教程總是看不懂
