我在将字符串写入文本文件并从文件中读取时遇到问题。
输入字符串 ( ) 正确char text1
写入文件 ( input.txt
) 并读取。但是我的结果文件有问题 - 字符串似乎可以正确写入文件,但是如果我看一下文件,文件开头的结果字符串之前有一个空格。如果我输入文本“ weather is weather
”,那么在结果文件中我有这个 - “ weather is is weather
”。结果字符串文本是可以的,唯一的问题是由于某种原因,结果文件的开头有一个空格。
当我使用此代码在屏幕上打印结果文件的内容时
while((ch2 = fgetc(result)) != EOF)
printf("%c", ch2);
它什么都不打印,但是如果我打印text2
字符串本身(不是从文件中),puts(text2);
那么它会正确打印。
这个问题的原因可能是什么,我该如何解决?
这是整个程序:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char text1[200], text2[200], words[20][100], *dist, ch1, ch2;
int i, j, nwords=0;
FILE *input, *result;
input = fopen("input.txt", "w");
if(input == NULL)
{
perror("Error opening the file.\n");
exit(EXIT_FAILURE);
}
// Text input
printf("\n Enter the text:\n\n ");
gets(text1);
fputs(text1, input);
fclose(input);
// Split string into words
dist = strtok(text1, " ,.!?");
i=0;
while(dist!=0)
{
strcpy(words[i],dist);
dist = strtok(NULL, " ,.!?");
i++;
nwords++;
}
// Duplicating words that doesn't repeat in input string and copy them into tex2 string
int flag_arr[20];
memset(flag_arr, 0, 20);
for(i=0; i <= nwords-1; i++)
{
for(j=0; j<=nwords-1; j++)
{
if(strcmp(words[i],words[j])==0)
{
flag_arr[i] += 1;
}
}
}
for(i = 0; i <=nwords-1; i++)
{
if(flag_arr[i] > 1)
{
strcat(text2," ");
strcat(text2,words[i]);
}
else
{
strcat(text2," ");
strcat(text2,words[i]);
strcat(text2," ");
strcat(text2,words[i]);
}
}
result = fopen("result.txt", "w");
if(result == NULL)
{
perror("Error opening the file.\n");
exit(EXIT_FAILURE);
}
fputs(text2, result);
fclose(result);
// Rezultats
fopen("input.txt", "r");
if(input == NULL)
{
perror("Error opening the file.\n");
exit(EXIT_FAILURE);
}
fopen("result.txt", "r");
if(result == NULL)
{
perror("Error opening the file.\n");
exit(EXIT_FAILURE);
}
printf("\n\n\n Input:\n\n ");
while((ch1 = fgetc(input)) != EOF)
printf("%c", ch1);
// puts(input);
printf("\n\n\n Result:\n\n ");
while((ch2 = fgetc(result)) != EOF)
printf("%c", ch2);
// puts(text2);
fclose(input);
fclose(result);
getchar();
return 0;
}