(高分求助)C语言 可以列出文件内容之间的关系的代码

假设有2个文件,test1.c test2.c。
如果在test1文件中的内容为:
...任意内容...
call test2.c
call test3.c
...任意内容...
则这个程序的输出结果应该为test1-->test2,test1-->test3
现在我就不怎么明白去怎么写这个,希望大家可以帮帮我
也许可能是我没有表达清楚吧。
有3个文件fun1.txt,fun2.txt,fun3.txt
其中fun1中的内容有:
...任意内容...call sub_fun1
call sub_fun2
...任意内容...
其中fun2中的内容有:
...任意内容...
call sub_fun2
...任意内容...
其中fun3中的内容有:
...任意内容...
call sub_fun1
...任意内容...

现在通过这个程序,读取fun1.txt,fun2.txt,fun3.txt 3个文件的内容,最后打印出
fun1 call sub_fun1
fun1 call sub_fun2
fun2 call sub_fun2
fun3 call sub_fun1
这样的内容,谢谢大家了,希望大家帮帮忙

第1个回答  2014-01-21
查找call testX.c 有的话就在结果集里填写

#include <iostream>#include <string>#include <fstream>
char acDest[] = "call testx.c";//主程序部分int main() { std::string strRtn = "";
std::string strSrcName;//("D:\\123.txt"); std::cin >> strSrcName; if ( !std::cin ) { return 1; }
std::string strFileName = strSrcName.substr(strSrcName.rfind("\\")+1); std::string strReplaceStr = strFileName.append("-->"); std::ifstream inputFile(strSrcName.c_str()); if ( !inputFile ) { return 1; }
int iPos = 0; int iDestLen = strlen(acDest);
do { char cData = inputFile.get(); if ( cData == EOF ) { break; }
if ( 9 == iPos || cData == acDest[iPos] ) { iPos++; }
if ( iPos == iDestLen ) { inputFile.seekg(0-iDestLen,std::ifstream::cur); char acTemp[20] = { 0 };
inputFile.read(acTemp,iDestLen); std::string strTemp(acTemp); strTemp.replace(0,4,strReplaceStr);//动态 strTemp.replace(strTemp.length()-2,2,";");
strRtn += strTemp; iPos = 0; }
} while ( 1 );
std::cout << strRtn << std::endl;
system("pause"); return 0;
}本回答被提问者采纳
第2个回答  2014-01-21
表达的意思我不懂
第3个回答  2014-01-21
//test1.c
#include<stdio.h>
#include"test2.h"
#include"test3.h"

int main()
{
    printf("test1\n");
    test2();
    test3();
    return 0;
}
//test2.h
void test2();

//test2.c
#include<stdio.h>

void test2()
{
    printf("test2\n");
}

//test3.h
void test3();
//test3.c
#include<stdio.h>
void test3()
{
    printf("test3\n");
}

相似回答
大家正在搜