GEZEI 2022-07-01 18:59 采纳率: 100%
浏览 41
已结题

关于#C++#的问题,如何解决?

问题遇到的现象和发生背景

C++。
第一个问题:提示我未找到源.cpp,然后就一直是错的,调试不了。
第二个问题:怎么去把word输出到file?

问题相关代码,请勿粘贴截图

#include
#include
#include
using namespace std;
#define MAX 500
#define MAX_I 5000

int read(char* file, char word[][20])
{
int k = 0, g = 0, j = 0;
//逐渐遍历file字符串,将单词保存到word数组中
for (int i = 0; i < strlen(file); i++)//strlen测量文件长度
{//碰到符号和空格
word[k][g++] = file[i];
if (file[i] == ',' || file[i] == '.' )
{
k++;
g = 0;
}
else if (file[i] == '.')
{
j++;
g = 0;
}
else if (file[i] == ' ')
{
k++;
j++;
g = 0;
}
}
return j + 1;//返回单词个数
}

void handle(char word[][20], char* p1, char* p2, int n)
{
for (int i = 0; i < n; i++)
{
if (strcmp(word[i], p1) == 0)//strcmp比较函数,两个字符相同则返回0
{
strcpy(word[i], p2);
}
}
}

void write_file(char* file, char word[][20], int n)
{
int k = 0, g = 0, j = 0;
//逐渐遍历file字符串,将单词保存到word数组中
for (int i = 0; i < strlen(file); i++)//strlen测量文件长度
{//碰到符号和空格

}

}
int main() {
char word[MAX][20] = { 0 };
char file[MAX_I] = { 0 };
char* b_rep = new char[20];
char* t_rep = new char[20];
int n;
ifstream ifs("words.txt", ios::in);
if (!ifs.is_open())//判断文件是否打开
{
cout << "文件打开失败,请保证打开文件存在" << endl;
return 0;
}
int i = 0;
//读取数据
while (!ifs.eof()) //是否读到结尾
{
file[i] = ifs.get();
i++;
}
ifs.close();
//n记录文件中单词的个数
n = read(file, word);
cout << "输入被替换单词"; cin >> b_rep;//输入被替换单词
cout << "输入替换单词"; cin >> t_rep;//输入替换单词
handle(word, b_rep, t_rep, n);
write_file(file, word, n);
ofstream ofs("new_words.txt", ios::out|ios::binary);
//写入数据
ofs.write((const char*)&file, sizeof(file));
ifs.close();
cout << "写入完成";
system("pause");
return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 浪客 2022-07-01 23:28
    关注
    
    #define MAX 500
    #define MAX_I 5000
    
    int read(char *file, char word[][20])
    {
        int k = 0, g = 0, j = 0;
        
        //逐渐遍历file字符串,将单词保存到word数组中
        // for (int i = 0; i < len; i++) // strlen测量文件长度
        while (*file)
        {
            //碰到符号和空格
    
            // if (file[i] == ',' || file[i] == '.')
            if (*file == ',' || *file == '.' || *file == ' ')
            {
                k++;
                g = 0;
                word[k][g] = *file; //所有符号也作为单词存储。
                k++;
            }
            else
                word[k][g++] = *file;
            file++;
        }
    
        // return j + 1; //返回单词个数
        return k;
    }
    
    void handle(char word[][20], char *p1, char *p2, int n)
    {
        for (int i = 0; i < n; i++)
        {
            if (strcmp(word[i], p1) == 0) // strcmp比较函数,两个字符相同则返回0
            {
                strcpy(word[i], p2);
            }
        }
    }
    
    void write_file(char *file, char word[][20], int n)
    {
        int k = 0, g = 0, j = 0;
        int len;
    
        //逐渐遍历file字符串,将单词保存到word数组中
        // for (int i = 0; i < strlen(file); i++) // strlen测量文件长度
        for (int i = 0; i < n; i++) // strlen测量文件长度
        {
            //碰到符号和空格
            strcpy(file, word[i]);
            file += strlen(word[i]);
        }
        *file = '\0';
    }
    int main()
    {
        char word[MAX][20] = {0};
        char file[MAX_I] = {0};
        char *b_rep = new char[20];
        char *t_rep = new char[20];
        int n;
        ifstream ifs("words.txt", ios::in);
    
        if (!ifs.is_open()) //判断文件是否打开
        {
            cout << "文件打开失败,请保证打开文件存在" << endl;
            system("pause");
            return 0;
        }
    
        int i = 0;
    
        //读取数据
        while (!ifs.eof()) //是否读到结尾
        {
            file[i] = ifs.get();
            i++;
        }
        file[--i] = '\0'; ///
    
        ifs.close();
        // n记录文件中单词的个数
        n = read(file, word);
        cout << "输入被替换单词";
        cin >> b_rep; //输入被替换单词
        cout << "输入替换单词";
        cin >> t_rep; //输入替换单词
        handle(word, b_rep, t_rep, n);
        write_file(file, word, n);
        ofstream ofs("new_words.txt", ios::out | ios::binary);
        //写入数据
        ofs.write(file, strlen(file));
        // ofs.write((const char *)&file, sizeof(file));
        ifs.close();
        cout << "写入完成";
        system("pause");
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月8日
  • 已采纳回答 7月8日
  • 创建了问题 7月1日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么