加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从txt文件读取并输入到C中的数组

发布时间:2020-12-16 09:49:39 所属栏目:百科 来源:网络整理
导读:我有我的txt文件 4 110 220 112 335 4是行数和4 * 3的int数.我必须读“4”然后读取剩余的并将它们输入到数组中 这就是我所拥有的 void main(){ int a,n; int i=0,j=0,k[30]; // int *N; FILE *fp = fopen("test.txt","r"); if(fscanf(fp,"%d",a) != 1) { //
我有我的txt文件

4  
110  
220  
112  
335

4是行数和4 * 3的int数.我必须读“4”然后读取剩余的并将它们输入到数组中

这就是我所拥有的

void main(){ 
    int a,n;    
    int i=0,j=0,k[30]; //
    int *N;

    FILE *fp = fopen("test.txt","r");  
    if(fscanf(fp,"%d",&a) != 1) { //
       // something's wrong 
    }

    n=3*a; //3*a numbers in the file
    N = malloc(3 * a * sizeof(int)); 
    for(i = 0; i <n;++i) {
       int result=fscanf(fp,&N[i] );  
    }   
    fclose(fp);  
    for(j=0;j<3*a;j++){  
       k[j]=N[j]; 
    }

    printf("%d",k[0]);
 }

当我打印k [0]时,它应该打印“1”,而是打印整行“110”

还有其他办法吗?

解决方法

格式说明符%d没有指定长度,因此fscanf将读取尽可能多的数字;这就是为什么你得到110而不是1.

如果你指定一个长度,比如?,它将只读取你告诉它的数字:

for(i = 0; i <n;++i) {
   int result=fscanf(fp,"%1d",&N[i] );  
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读