>im 从输入文本文件中读取行,并将行存储在数组数组中1
一旦我完成读取ID就像打印出数组中的元素一样。id喜欢做动态内存分配。但那是在我让这部分工作之后..到目前为止我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 256
int main(){
FILE* fp;
fp=fopen("input.txt","r");
char currentline[MAX_LEN];
int i=0;
char *array1;
array1 = malloc(10*MAX_LEN);
while(fgets(currentline,MAX_LEN,fp)!=NULL && i<10){
strcpy((char *)&array1[i],currentline);
printf("%sn",currentline);
printf("array1= %sn",(&array1[i]));
i++;
}
for (;i>=0;i--){
printf("%sn",(&array1[i]));
}
}
输入1.txt
101
84
65
13
hello
90
24
94
73
70
68
94
65
输出:
101
array1= 101
84
array1= 84
65
array1= 65
13
array1= 13
hello
array1= hello
90
array1= 90
24
array1= 24
94
array1= 94
73
array1= 73
70
array1= 70
0
70
770
9770
29770
929770
h929770
1h929770
61h929770
861h929770
1861h929770
我希望它做的是打印出每个元素。但它打印每行的第一个字符..是什么原因造成的?
在这一行中:
strcpy((char *)&array1[i],currentline);
将当前行复制到 到 Array1,从其第 i 个元素开始。
所以基本上你首先从 array[0]
开始复制 currentLine,然后离开第一个元素并复制下一个 currentLine 从 array[1]
开始,依此类推。每次覆盖上一个当前行时,除了它的第一个元素。
你想要(我想)做的是:
strcpy(&array1[i*MAX_LEN],currentline);
这将把每个当前行保存在它自己的 256 个字符块中。
对于 i=0,您将从数组 [0] 开始写入,
对于数组 [256]的 i=1...
也去掉那些丑陋的(字符*)演员表,它们在这里是不必要的。
在取消引用 array1 之前,您也
应该检查 malloc 是否有效