我需要在文本的每个单词中加上最后一个字母,我要输入的内容。 我写了下一个函数:
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++;
答案 0 :(得分:0)
我的周期出了什么问题?
似乎可行,但不正确:…在输出中,我得到了:Мqwert而不是yqwert
那是因为您忘记了将最后一个字母放在开头,所以首字母未初始化。只需插入
pr[0] = pr[k];
在您的周期之前。