C语言提取一列字符中的某个字符,怎么提取啊

来源:百度知道 编辑:UC知道 时间:2024/06/17 11:13:59
现在我有一个蛋白质序列,其中有一段是这样的

ATOM 238 C SER A 443 57.411 -13.573 28.077 1.00 34.55 C
ATOM 239 O SER A 443 58.137 -12.748 28.613 1.00 35.29 O
ATOM 240 CB SER A 443 55.172 -13.435 26.988 1.00 32.84 C
ATOM 241 OG SER A 443 55.811 -12.497 26.124 1.00 31.21 O
ATOM 242 N PRO A 444 57.880 -14.544 27.309 1.00 36.40 N
ATOM 243 CA PRO A 444 59.291 -14.589 26.897 1.00 37.11 C
ATOM 244 C PRO A 444 59.757 -13.257 26.325 1.00 37.48 C
ATOM 245 O PRO A 444 60.901 -12.868 26.589 1.00 38.40 O
ATOM 246 CB PRO A 444 59.294 -15.640 25.787 1.00 38.05 C
ATOM 247 CG PRO A 444 58.097 -16.548 26.106 1.00 37.84 C

但是每一行文字中只有最后一个字符(大写英文字母)是有用的信息,希望有高手帮帮忙,做一个C语言的程序,可以把很多行(3万左右)行这样的信息复制入程序中,然后运行结果是最后的字符。而且得到的结果是每一个只有

#include<stdio.h>
#include<string.h>
char tail(char *line){
if(!line)return -1;
if(*(line+strlen(line)-1)=='\n')
*(line+strlen(line)-1)=0;
return *(line+strlen(line)-1);
}
int main(){
#define IN "在这写输入文件名,需要有完成路径"
#define OUT "这里写输出文件名,也需要路径"
FILE *fp_in,*fp_out;
char buf[BUFSIZ];
fp_in=fopen(IN,"r");
fp_out=fopen(OUT,"w");
if(!fp_in || !fp_out)return -1;
while(fgets(buf,BUFSIZ,fp_in)>=0){
fprintf(fp_out,"%c\n",tail(buf));
}
printf("ok\n");
fclose(fp_in);fclose(fp_out);
return 0;
}

char st[1024];
int L;
用 fgets 读入一行
用 L = strlen(st); 得一行长度,包含行尾新行符。
你要的每行最后一个字符是st[L-2]
循环3万次左右,读到EOF 结束。

不太会C的文件操作,用C++来实现应该是不难,不知你想想要,

#include<fstream>
#include<string>
#include<iostream>
using namespace std;
ifstrea