1

我有一个C在机器上运行良好的代码,Solaris但相同的代码有时会产生分段错误,有时会产生不同的输出。

以下是我在两台机器上有所不同的部分:

FILE *inf;
unsigned char *ptr;
unsigned short *ds;
int n, s; 
char work[100];

inf = (FILE *) fopen("Filename", "r");  
s = fseek(inf, 0, SEEK_SET);
n = fread(work, 1, sizeof(work), inf);
ptr = (unsigned char *)work;
ptr += 8;

count = 0;
ds = (unsigned short *) ptr;
count = *ds;

当我打印计数值时,它15Solaris机器和机器768Linux

请建议我在 Linux 机器上对代码进行的更改。

4

1 回答 1

2

我不认为这是(只是)字节序。15 = 0x000F。768 = 0x0300。不过,它可能与 char 的大小有关。尝试在两台机器上打印 CHAR_BIT 看看你得到了什么。

于 2013-08-16T12:26:29.980 回答