如何在C中将char数组转换为变量long?

时间:2012-10-17 19:35:24

标签: c long-integer typeconverter arrays

我一直在努力转换这个。我已经尝试循环遍历数组,将字符转换为long,但这不起作用。我在网上看过简单的例子,但它们没有涵盖更长的char数组的循环过程。我可以使用什么方法将这个char数组(SAMPLE)转换为long类型的一个变量?

ar.h

struct  ar_hdr       /* file member header */
     {
         char    ar_name[16];    /* '/' terminated file member name */
         char    ar_date[12];    /* file member date */
         char    ar_uid[6]       /* file member user identification */
         char    ar_gid[6]       /* file member group identification */
         char    ar_mode[8]      /* file member mode (octal) */
         char    ar_size[10];    /* file member size */
         char    ar_fmag[2];     /* header trailer string */
     };

我的代码

struct ar_hdr sample;
lseek(fileD, 24, SEEK_SET); //fileD is the file desriptor for the opened archive

//I start at 24 because of the 8 byte magic string for an archive starts the file "!<arch>\n"


int numRead = read(fileD, sample.ar_date, 12);
printf(sample.ar_date);

long epoch = (long *) *sample.ar_date;   //terrible coding here
printf("The current time is: %s\n", asctime(gmtime(&epoch)));

1 个答案:

答案 0 :(得分:2)

man ar 说:

  

文件成员标头中的所有信息均为可打印ASCII 。该   标题中包含的数字信息存储为十进制   数字(除了八进制的ar_mode)。因此,如果存档   包含可打印文件,存档本身是可打印的。

所以 atol(ar_date) 应该可以解决问题。