2011-03-17 48 views
1

我想打開兩個文件(linoteste.ima和sysmattest.dat),它們都包含一個矩陣。成功打開文件後,當我打印它們時,我只能得到包含零的矩陣,並且我不知道我做錯了什麼。這不是一個與CUDA相關的問題,而是一個C語言問題,它只是打開文件以與CUDA進行矩陣乘法。我的代碼如下(我已經試過了,而cicle更換的fread讀取一次一個元素,但它不工作):提前在CUDA中打開文件C

float*matlino=(float*)malloc(sizeof(float)*100*100); 
float*matsys=(float*)malloc(sizeof(float)*10000*10000); 

//Open linogram 
FILE * flino, *fmat; 
flino = fopen ("linoteste.ima","r");  //also tried with "rb" instead of "r" 
if (flino!=NULL) 
{ 
    fread (matlino,sizeof(float),100*100,flino); 
    fclose (flino); 
    puts("Linograma aberto com sucesso"); 
} 
else 
    puts("impossivel abrir linograma"); 
printMat(matlino,10,10); 

//Open system matrix 

fmat = fopen("sysmattest.dat","r"); 
if (fmat!=NULL) 
{ 
    fread (matsys,sizeof(float),10000*10000,fmat); 
    fclose (fmat); 
    puts("Matriz sistema aberta com sucesso"); 
} 
else 
puts("impossivel abrir matriz sistema"); 

謝謝!

+0

也許printMat()有問題嗎? – 2011-03-17 12:19:47

+0

你在用什麼操作系統? flino是NULL還是無法獲得所需的數據? – DavidMFrey 2011-03-17 12:25:51

+0

你是如何在第一個地方寫出矩陣的 - 就像浮點數組的轉儲一樣?文件是否滿零? (是的,我希望你需要「rb」)你從fread獲得什麼樣的回報價值? – Rup 2011-03-17 12:28:31

回答

1

你試過fscanf()嗎?

喜歡的東西:

if(flino!=NULL) 
{ 
    int i; 
    for(i = 0; i < 10000; i++) fscanf(flino, "%f", &malino[i]); 
    fclose(flino); 
}