如何解决在xv6
我正在尝试创建一个函数,该函数逐行读取txt.file并按每一行的每个索引保存到char指针数组中。
由于Xv6环境没有任何strcat
或任何典型的STL库。我从头开始创建了strcat函数。
为此算法,我放sizeof(buf[0])
的原因是要逐个阅读字母,因为它在循环中会逐个字母逐出。
我成功地逐个字母地提取了内容,并尝试添加缓冲区2的指针数组。只有在看到行更改并更新index=counter++
时,数组的索引才会移动。
但是,当我尝试使用str(buff2,buff)进行字符串concat并按索引打印出buffer2时。 结果显示为
-buff2 0: NNNNNNNNNNn
-buff2 1: NNNNNNNNNn
-buff2 2: NNNNNNNNn
-buff2 3: NNNNNNNn
-buff2 4 : NNNNNNn
-buff2 5: NNNNNn
-buff2 6: NNNNn
-buff2 7: NNNn
-buff2 8: NNn
-buff2 9 : Nn
-buff2 10: n
txt文件包含
no.1 \next line
no.3 \next line
no.5 \next line
no.6 \next line
no.7 \next line
......
#include "types.h"
#include "stat.h"
#include "user.h"
char *starCat(char *a,char *b){
int i=0,j=0;
int cont=0;
int len=strlen(a)+strlen(b);
char *combined;
combined=(char*)malloc(len*sizeof(char));
for(i=0;i<strlen(a);i++){
combined[i]=a[i];
}
for(j=i;j<strlen(a)+strlen(b);j++){
combined[j]=b[cont++];
}
combined[len]='\0';
return combined;
}
char buf[100];
void
trial(int fd,char *name)
{
int n,i=0,count=0,count2=0,l,g;
char *buff2;
buff2=malloc(512*sizeof(char*));
while((n = read(fd,buf,sizeof(buf[g]))) > 0){
for(i=0; i<n; i++){
count++;
if(buf[i] == '\n'){
buff2[count2]=*starCat(&buff2[count2],&buf[i]);
L++;
count2++;
}
else {
printf(1,"buf1 value: %s",&buf[i]);//shows the individual char for
buff2[count2]=*starCat(&buff2[count2],&buf[i]);
}
printf(1,"\n");
}
}
if(n < 0){
printf(1,"uniqtrial: read error\n");
exit();
}
printf(1,"\n");
int t;
for(t=0;t<count2;t++){
printf(1,"buff2: %s \n",&buff2[t]);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。