我有這個程序,它從.txt文件中刪除所有以相同符號開始和結束的單詞。在我看來,它應該工作,但不知何故,當達到EOF它不會停止和紅外打印我一些奇怪的中國符號...我的程序沒有找到EOF符號
下面的代碼:
#include <stdio.h>
#include <stdlib.h>
#define MAX 255
void search(char *symbolMass, FILE *duomFail, FILE *rezFail)
{
int i = 0, k =0, j =0, p = 0;
char symbol = 0;
char *rezMass;
char word[20];
rezMass = (char*)malloc(sizeof(char)*MAX);
while(simbolis != EOF)
{
printf("veikia");
symbol = symbolMass[i];
if (symbol != 32 && symbol != 10 && symbol != EOF)
{
word[j] = symbol;
i++;
j++;
}
else
{
word[j] = symbol;
i++;
if(word [0] == word[j - 1])
{
rezMass[k] = word[j];
k++;
}
else
{
for (p = 0; p <= j; p++, k++)
{
rezMass[k] = word[p];
}
}
j = 0;
}
}
for(i = 0; i <= k; i++)
symbolMass[i] = rezMass[i];
}
int main(int argc, char* argv[])
{
FILE *duom, *rez;
char *symbols;
symbols = (char*)malloc(sizeof(char)*MAX);
if (argc > 1)
{
duom = fopen (argv[1],"r");
rez =fopen (argv[2],"w");
if (duom != NULL)
{
while (symbols != NULL)
{
fgets(symbols, MAX, duom);
search(symbols, duom, rez);
fputs(symbols, rez);
}
fclose(duom);
}
else
{
printf("There is no file with name \"%s\"\n",argv[1]);
}
}
else
{
printf("The command has no arguments.\n");
}
fclose(rez);
free(simboliai);
return 0;
}
它的工作原理是這樣的:它掃描符號並將它們放入「單詞」直到它到達「空格」,「新行」或「EOF」,然後檢查單詞是否以相同符號開始和結束,如果是,則只打印「空格」 「新行」或「EOF」,如果不是,則打印整個單詞。 哦,並且代碼是用C編寫的(如果它很重要,則使用CodeBlocks)。
什麼是'辛博lis'?如果你將'symbol'與'EOF'進行比較,'symbol'應該是'int',而不是'char'。 – mch
它必須是「符號」忘記改變。爲什麼它應該是int?我正在檢查ASCII碼。 – Tripper
** EOF **是一個很大程度上虛構的東西。 –