gpt4 book ai didi

c - 在 C 中使用 read() 系统调用来读取整数

转载 作者:行者123 更新时间:2023-11-30 15:52:17 25 4
gpt4 key购买 nike

我必须使用从文件中读取的一次来构建一个包含字符、整数和 float 的结构。我可以很好地读取字符,但读取整数时遇到问题

CountryData ReadingFile(Directory* CountryDirectory,int SortedCountryData,char *Code,int NumberofCountries)
{
int Location,i; // Will store Location in array and location in bytes
char Buff[40]; //Buffer the size of the stuct
char Tok[25];
CountryData Country;
off_t offset; //Offset value
ssize_t count;

Location = BinarySearch(CountryDirectory,Code,0,NumberofCountries-1); //Findlocation in array
Location =CountryDirectory[Location].Offset; //Find location in bytes
offset = lseek(SortedCountryData, Location, SEEK_SET); //Seek to location in file
count = read(SortedCountryData,Buff,40); //Read file

//Data in Buff should be Code[4],Name[25],int,float

for(i=0;i<4;i++)//Get code
{
Tok[i] = Buff[i];
}
strncpy(Country.Code,Tok,sizeof(Country.Code));//Copy Code

for(i=0;i<25;i++)//Get Name
{
Tok[i]=Buff[i+4];
}
strncpy(Country.Name,Tok,sizeof(Country.Name));//Copy Name

//This is where I try to read the int
char INTEGER[4];
for(i=0;i<4;i++) //Read an int
{
INTEGER[i]=Buff[33+i];
}
int A =(int)INTEGER;
printf("Tok: %d",A);

return(Country);


}

最佳答案

我相信@slugonamission关于指针问题是正确的,但如果我正确理解问题,int将作为int存储在文件中,而你处理char数组的原因是你被迫从您阅读的方式。

为此尝试 memcpy。还要注意字节序问题。

int A;
memcpy(&A, Buff + 33, 4 * sizeof(char))

关于c - 在 C 中使用 read() 系统调用来读取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14550930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com