RT 
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int GetNoSpsce(char *src,char *dst)
 {
  if(src==NULL) return ;
  else{
  int i=0,j=0,q=0;
  for(i=0;i<strlen(src);i++)
  {if(src[i]!=' ')
   {dst[j]=src[i];j++;}
  }
  dst[j]='\0';
  return *dst;
  }
  
 }
int main (void)
{
FILE * out , *in ;
char  line[500],temp[500];
char  mer_code[16],term_code[9],key[33],flag[3];
int  i ;
out=fopen("C:/cygwin/home/andrew/ab.txt","r");
       


if(out!=NULL)
{
  while(fgets(line,590,out))

{   
GetNoSpsce(line,temp);
sscanf(line,"%1s",flag);
if(strcmp(flag,"I")==0&&strlen(line)>100) {

sscanf(temp,"%1s,%15s,%8s,%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%*[^,],%32s,%*s",flag,mer_code,term_code,key);
        printf("\"%s\",\"%s\",\"12345678\",\"%s\",\"%s\"\n",mer_code,term_code,key,key);      
}
//printf("%s",line);

}
  }
  else puts("file not exists(文件不存在)");
   fclose(out);

ab.txt 文件格式及内容如下:
共两行:
I,000000000001080,00000080,0812345678,0812345678,00,1,1,1,D00,156,1,1,1,3,GSATREGADYGAFAGTASGARTARAGRYRTYT,GSATREGADYGAFAGTASGARTARAGRYRTYT,20111107,29991231,1,1,1,1,1,02,02,01,01,156,P,02,DR7,0812345678,0812345678
I,000000000001081,00000081,0812345678,0812345678,00,1,1,1,D00,156,1,1,1,3,YSATREAFAGAFAGTASGARTAAFADRYRTYT,YSATREAFAGAFAGTASGARTAAFADRYRTYT,20111107,29991231,1,1,1,1,1,02,02,01,01,156,P,02,DR7,0812345678,0812345678

解决方案 »

  1.   

    char* 用string或char[]
    strlen用 string.Length
    strcmp 就是比较
    File* 那个就是操作文件的,你用filestream就行,你看懂了就没必要翻译,自己写一个就行了
      

  2.   

    不知道是不是这样的效果啊 using System;
    using System.IO;namespace ConsoleApplication1
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread] private static void GetNoSpace(byte []src,ref char []dst)
    {
    if(src==null)
    {
    return ;
    }
    else
    {
    int j = 0;
    for(int i = 0; i < src.Length;i++)
    {
    if(src[i]!=' ')
    {
    dst[j]=Convert.ToChar(int.Parse(src[i].ToString().Trim()));
    j++;
    }
    }
    }
    } private static string ConvertToString4CharArray(char []array)
    {
    string returnVal = string.Empty;
    if(array!=null)
    {
    for(int i = 0; i < array.Length ;i++ )
    {
    returnVal += array[i].ToString();
    }
    } return returnVal;
    }
    static void Main(string[] args)
    {
    char []line = new char[500];
    char []temp = new char[500]; 
    string mer_code=string.Empty,term_code=string.Empty,key=string.Empty;
    char flag = new char();
    int j = 0;
    string filepath = @"C:/cygwin/home/andrew/ab.txt";
    FileStream file = new FileStream(filepath,FileMode.Open);
    int size = int.Parse(file.Length.ToString());
    byte[] buff = new byte[size] ;
    file.Read(buff,0,size);
    if(File.Exists(filepath))
    {
    if(buff.Length> 0)
    {
    GetNoSpace(buff,ref temp);
    flag = temp[0];
    if(flag.ToString().Equals("I") && buff.Length > 100)
    {
    string dataString = ConvertToString4CharArray(temp).Replace(",","").Replace("\0","");
    string []dataArray = dataString.Split('\n');
    for(int i = 0; i< dataArray.Length ;i++)
    {
    if(dataArray[i]!="")
    {
    mer_code = dataArray[i].Substring(1,15);
    term_code = dataArray[i].Substring(16,8);
    key = dataArray[i].Substring(25,33);
    System.Console.WriteLine(string.Format("{0},{1},{2},{3}",mer_code,term_code,key,flag.ToString()));
    } }
    System.Console.Read();
    }
    }
    }
    }
    }
    }