gpt4 book ai didi

c - 从C中的文件读取

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

我正在尝试从文件中读取一些整数。该程序编译时没有错误,但不打印整数。

int main(int argc,char *argv[]){
if(argc != 2){
printf("Use %s file_name", argv[0]);
}
else{
char file_name[255];
int df,n=0,v[1000],tmp,i;
strcpy(file_name,argv[1]);
df=open(file_name,O_RDONLY);
while(read(df,tmp,sizeof(n))>0){
v[n++] = tmp;
}
for(i=0;i<n;i++){
printf("%d ",v[i]);
}
}
return 0;}

新代码:

 int main(int argc,char *argv[]){
if(argc != 2){
printf("Use %s file_name", argv[0]);
}
else{
char file_name[255];
int df,n=0,v[1000],tmp,i;
strcpy(file_name,argv[1]);
if ((df=open(file_name,O_RDONLY) ) < 0) {
perror("Cannot open output file\n"); exit(1);
}
while( n != 1000 && ( read(df,&v[n++],sizeof(*v)) > 0) ){}
for(i=0; i!=n; i++){
printf("%c ",(char)v[i]);
}
}
return 0;
}

即使在它只显示其中 2 个位模式而不是 3 个之前,即使我的文件中有 3 个字符

最佳答案

Read takes a pointer to buffer as it's second arg :

int main(int argc,char *argv[]){
if(argc != 2){
printf("Use %s file_name", argv[0]);
}
else{
char file_name[255];
int df,n=0,v[1000],tmp,i;
strcpy(file_name,argv[1]);
if ((df=open(file_name,O_RDONLY) ) < 0) {
perror("Cannot open output file\n"); exit(1);
}
while( n != 1000 && ( read(df,&v[n++],sizeof(*v)) > 0) ){}
for(i=0; i!=n; i++){
printf("%d ",v[i]);
}
}
return 0;
}

我实际上很惊讶你的程序没有出现段错误 - 你正在使用未初始化的 int 作为指针值。您需要检查文件是否已成功打开。您还需要确保缓冲区不会溢出,因此需要在每次迭代时检查 n 。另外,不需要使用临时变量,您可以直接写入缓冲区。

关于c - 从C中的文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14296236/

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