最后一封信开始

时间:2016-12-10 22:21:27

标签: c

我需要在文本的每个单词中加上最后一个字母,我要输入的内容。 我写了下一个函数:

void obrabotka_file(char *fname_i, char *fname_r)
{
    FILE *in, *out;     //start and result files (streams)
    char st[RAZ];           //start string
    char sr[RAZ];           //result string
    char pr[RAZ];           //handling word
    int i, j, k;            //number of the handling word
    int n;                      // string's result length
    in = fopen(fname_i, PR_R); //open file for reading
    out = fopen(fname_r, PR_W); //open file for writing
    fgets(st, RAZ, in);     //reading string from "in" file 
    while (!feof(in))
    {
        i = 0;
        n = 0;
        sr[i] = '\0';
        while (st[i])
        {
            k = 0;
            while (st[i] == ' ')    //deleting spaces in da string
                i++;
            while (st[i] != ' ' && st[i + 1])   //select another word
            {
                pr[k+1] = st[i];
                k++;
                i++;
            }
            for (j = 0; j < k; j++, n++)
                sr[n] = pr[j];
            if (st[i])
                sr[n] = ' ';
            n++;
            i++;
        }
        sr[n++] = '\0';         //closing result string
        fprintf(out, "%s\n", sr);  //writing handled string in the new file
        fgets(st, RAZ, in);     //reading new string from the file
    }

    fclose(in); fclose(out);     //Closing "in" abd "out" files 
}

但它删除了每个单词中的第一个字母。

我的周期出了什么问题?请解释一下。

        for (j = 0; j < k; j++, n++)
            sr[n] = pr[j];
        if (st[i])
            sr[n] = ' ';
        n++;
        i++;

1 个答案:

答案 0 :(得分:0)

  

我的周期出了什么问题?

     

似乎可行,但不正确:…在输出中,我得到了:Мqwert而不是yqwert

那是因为您忘记了将最后一个字母放在开头,所以首字母未初始化。只需插入

            pr[0] = pr[k];

在您的周期之前。