У меня есть эта программа, которая удаляет из файла .txt все слова, которые начинаются и заканчиваются одним и тем же символом. На мой взгляд, это должно работать, но почему-то оно не останавливается, когда достигается 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, если это имеет значение).
simbolis
? если сравнитьsymbol
сEOF
,symbol
должно бытьint
, а неchar
. - person mch   schedule 24.11.2015EOF
не является значением ascii, это целое число-1
, которое не может храниться вchar
. - person mch   schedule 24.11.2015symbols
. Все эти не связанные между собой проблемы отвлекают от реальной проблемы. - person Some programmer dude   schedule 24.11.2015