【发布时间】:2015-03-14 13:15:22
【问题描述】:
我的文件读取()函数有问题。我的文件是这样的:
4boat
5tiger
3end
其中数字是后面的字符串的长度。我需要从输入文件中读取整数和字符串,并使用低级 I/O 在标准输出上打印出来。这是我的代码:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
int main(int argc, char *argv[]){
int *len, fd, r_l, r_s;
char *s;
fd=open(argv[1], O_RDONLY);
if(fd>=0){
do{
r_l=read(fd, len, sizeof(int));
r_s=read(fd, s, (*len)*sizeof(char));
if(r_l>=0){
write(1, len, sizeof(int));
write(1, " ",sizeof(char));
}
if(r_s>=0)
write(1, s, (*len)*sizeof(char));
}while(r_l>=0 && r_s>=0);
}
return 0;
}
但它不起作用=/
【问题讨论】:
-
一个问题是前导数字实际上不是数字,它是一个字符,它是一个字节(
sizeof(int)通常是 4 个字节)。 -
会有比 9 更长的字符串吗?
-
如何为 len(在 read() 中用于缓冲区)和 s(在 read() 中也用作缓冲区)分配存储空间。