Уже поднимал тему по этой задаче на форуме. Но тогда вопрос был другого плана. Теперь возникла проблема избавиться от повторяющихся чисел. Пытаюсь это сделать при помощи функции findRepeat, но что-то не получается. В чём проблема?
| Код | #include <stdio.h> #include <stdlib.h> #define SIZE 10
int findRepeat(char* numbers, size_t sz){ int i, j; for (i=0; i<sz-1; i++) for (j=i+1; j<sz; j++){ if (numbers[i] == numbers[j]) return j; } return -1; }
int bfile(FILE *bfile) { int i, buf[10], j, tmp, a; char numbers[10]; for(i=0;i<10;i++){ buf[i] = rand()%10; }
if(!(bfile = fopen("binary.txt", "w"))){ perror("Could't open file"); return; } for(i=0;i<SIZE;i++){ if(!(fprintf(bfile, "%d", buf[i]))){ perror("Could't write into file"); return; } } fclose(bfile); if(!(bfile = fopen("binary.txt", "r"))){ perror("Could't open file for reading"); return; } if(!(fgets(numbers, sizeof(buf), bfile))){ perror("Could't read from binary.txt"); return; }
for(i=0;i<SIZE-1;i++){ for(j = i+1;j<SIZE;j++){ if(numbers[i] > numbers[j]){ tmp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = tmp; } } }
findRepeat(numbers, sizeof(numbers)/sizeof(numbers[0])); //puts(numbers); tfile(numbers); fclose(bfile); return 0; }
int tfile(char *numbers) { FILE *tfile; int i; if(!(tfile = fopen("text.txt", "w"))){ perror("Could't open text file"); return; } if(!(fputs(numbers, tfile))){ perror("Could't write into file"); return; } fclose(tfile); }
int main() { FILE *bf; bfile(bf); printf("Ok\n"); }
|
|