结果应该是什么样子:
G -- C
C -- G
T -- A
T -- A
C -- G
T -- A
T -- A
A -- T
C -- G
C -- G
C -- G
G -- C
T -- A
它实际上是什么样子:
GCTTCTTACCCGTGCCCCAC -- C
CTTCTTACCCGTGCCCCAC -- G
TTCTTACCCGTGCCCCAC -- A
TCTTACCCGTGCCCCAC -- A
CTTACCCGTGCCCCAC -- G
TTACCCGTGCCCCAC -- A
TACCCGTGCCCCAC -- A
ACCCGTGCCCCAC -- T
CCCGTGCCCCAC -- G
CCGTGCCCCAC -- G
CGTGCCCCAC -- G
GTGCCCCAC -- C
TGCCCCAC -- A
GCCCCAC -- C
CCCCAC -- G
CCCAC -- G
CCAC -- G
CAC -- G
AC -- T
C -- G
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <sys/mman.h>
int main(int argc, char **argv){
int buff = 100;
char *ptr = mmap (NULL,buff, PROT_WRITE | PROT_READ ,MAP_PRIVATE| MAP_ANONYMOUS,0,0);
if(ptr == MAP_FAILED){
printf("Mapping Failed\n");
return 1;
}
char *oof = mmap (NULL,buff, PROT_WRITE | PROT_READ ,MAP_PRIVATE| MAP_ANONYMOUS,0,0);
if(oof == MAP_FAILED){
printf("Mapping Failed\n");
return 1;
}
int f1 = open("file.txt", O_RDWR);
int length = read(f1,ptr,sizeof(char)*buff);
for(int i = 0; i<length;i++){
if(ptr[i] == 'A'){
oof[i] = 'T';
}
if(ptr[i] == 'T'){
oof[i] = 'A';
}
if(ptr[i] == 'C'){
oof[i] = 'G';
}
if(ptr[i] == 'G'){
oof[i] = 'C';
}
printf("%s -- %s\n", &ptr[i],&oof[i]);
}
}
我把一堆东西弄乱了,还弄坏了好几次。我觉得我错过了一些东西,但它没有出现在我的脑海中。
如果有人能给我任何想法,那就太好了。
在
for()
循环中,只需更改 printf()
语句即可打印字符,而不是字符串,如下所示:
printf("%c -- %c\n", ptr[i],oof[i]);
%c
-- 用于字符
%s
-- 用于字符串