gpt4 book ai didi

c - rbuf 从文件中读取数据,但无法将其传输到数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:35 24 4
gpt4 key购买 nike

所以我有一个编译过的 readNumbers 函数,它应该从输入文件中读取数字,还有一个 rbuf 缓冲区,它读取要传输到数组的文件的位。但是,当我给它一个输入时,比如说,12 3 5 6 7 34 11,在将其他所有内容设置为 0 并完成之前,它仅从文件中读取一个字符。

int readNumbers(int **array, char* fname) {

char *errmsg = "Failed to open input file!\n";
char rbuf[16];
int numberRead = 0, numberAllocated = 2, fd;
int temp = 0, i = 0;
int nRead = 0, negative = 1;
int newNumber = 0;

*array = (int *)malloc(numberAllocated * sizeof(int));

fd = open(fname, O_RDONLY, 0);
if (fd == -1){

write(2, errmsg, 31);
return (-1);
}

while ((nRead = read(fd, rbuf, 16)!=0)){
for (i = 0; i < 16; i++){
printf("%d, ", rbuf[i]);
}
printf("\n");
for (i = 0; i < nRead; i++){
printf("A, %d\n", nRead);
if (numberRead == numberAllocated){
numberAllocated *= 2;
*array = (int *)realloc(*array, numberAllocated * sizeof(int));
}

if (rbuf[i] == '-'){
negative = (-1);
}
else if (isdigit(rbuf[i])){
printf("B");
if (newNumber == 0){
printf("C\n");
temp = rbuf[i] - '0';
printf("%d\n", temp);
newNumber = 1;
}
else{
printf("D");
temp *= 10;
temp += (rbuf[i] - '0');
}
}
else{
printf("E");
if (newNumber == 1){
temp *= negative;
*array[i] = temp;
negative = 1;
temp = 0;
newNumber = 0;
numberRead ++;
}
}
}
for (i = 0; i < 16; i++){
rbuf[i] = '\0';
}
}

close(fd);

return numberRead;
}

有什么想法吗?感觉这个问题与read()nRead有关,但我无法弄清楚它是什么。

当前输出为: 49、50、32、51、10、53、32、54、32、55、10、51、52、32、49、49; 一个, 1; 公元前; 1;

最佳答案

事实证明,这个问题很容易解决。

while ((nRead = read(fd, rbuf, 16)!=0)){

所以如果你仔细观察,你会发现这里的括号有问题。正确的格式应该是这样的:

while ((nRead = read(fd, rbuf, 16))!=0){

是的。基本上,它是在将真值分配给用于保存字符数的变量之前检查读取的实际字符数是否不为零。

关于c - rbuf 从文件中读取数据,但无法将其传输到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29672416/

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