2014-01-22 101 views
1

我正在讀取父文件中的輸入文件,並根據文件中的內容將其傳遞給兩個子進程之一。現在將變量參數傳遞給子進程UNIX中c

char a[20],b[20],c[20]; 

    pFile = fopen ("instruction.dat","r"); 
while(!feof(pFile)) 
{ 
fscanf(pFile,"%s %s %s",a,b,c); 
switch(a[0]) 
    { 
    case 'f': write(fds1[1],b,sizeof(b)); 
      write(fds1[1],c,sizeof(c)); 
      write(1,"\nAFRCF",6); 
      break; 

    case 'a': write(fds2[1],b,sizeof(b)); 
      write(fds2[1],c,sizeof(c)); 
      write(1,"\nAFRCA",6); 
      break; 

    default: write(1,err,sizeof(err)); 
      //printf("\n Instruction.dat read error"); 
    } 
} 

,我面臨的問題是,的sizeof(A)操作者將返回所分配的存儲器的尺寸的陣列,從而所述子進程接收與從輸入文件中的實際內容一起一些垃圾。我無法事先預測數組的大小,所以我不能使用動態分配(malloc或realloc)來給出數組的確切大小。

將字符串的大小(在讀取輸入文件後)傳遞給write()的方法是什麼?

+0

_Passing確切字符串長度爲'write'_(其中一百萬人)似乎對這個問題更合適的名稱,只是說:) –

回答

3

使用strlen函數來獲取字符串不sizeof

write(fds1[1],b,strlen(b)); 
+1

地獄你快!順便說一句,愛你的'VsVim'擴展名。感謝那 :) –

2

我認爲你正在尋找strlen字符串函數的大小。例如:

write(fds1[1],b,strlen(b)); 
相關問題