Няшная / Говнокод #18988 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
/* Программа подсчитывает кол-во определенного символа в строке*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	int i, j;
	int number_letters = 26;
	int total_number_letters = 52;
	int alphabet_matches[total_number_letters];

	char ch;
	char *str = (char*) malloc (sizeof(char) * 100);

	char az_AZ_alphabet[total_number_letters];

	printf("Please enter string: ");
	scanf("%s", str);

	// Заполнения массивов маленькими и большими буквами
	az_AZ_alphabet[0] = 'a';
	for(i = 1; i < total_number_letters - number_letters; i++)
		az_AZ_alphabet[i] = 'a' + i;

	az_AZ_alphabet[51] = 'Z';
	for(i = 51; i >= total_number_letters - number_letters; i--)
		az_AZ_alphabet[i] = 'Z' - ((total_number_letters - 1) - i);

	// Массив full_alphabet[total_number_letters] заполнить нулями
	for (i = 0; i < total_number_letters; i++)
		alphabet_matches[i] = 0;

	// Подсчет символов входящих в строку
	for (i = 0; i < (int)strlen(str); i++) {
		for (j = 0; j < total_number_letters; j++)
			if (az_AZ_alphabet[j] == str[i])
				alphabet_matches[j] += 1;
	}

	// Вывод таблицы
	for (i = 0, ch = 'a'; i < total_number_letters; i++, ch++) {
		printf("%c - %d\n", az_AZ_alphabet[i], alphabet_matches[i]);

		//Вставляет пустую строку после строчных букв
		if (i == number_letters - 1)
			printf("\n");
	}

	free(str);

	return 0;
}

Один из пользователей LORa...

Запостил: accu accu, (Updated )

Комментарии (8) RSS

    • > йух знает
      Потому что fgets() - ёбаное говно, которое никто так и не смог правильно заюзать с первого раза 😉

      > const size_t sz = strlen(str_ptr) - 1
      Ну и вот из-за этого. Но это уже последствия проблемы со fgets'ом.
      Ответить
      • >Потому что fgets() - ёбаное говно, которое никто так и не смог правильно заюзать с первого раза 😉
        А какая альтернатива, что бы overflow'a не былО?
        Ответить
        • Мне кажется в дефолтных либах альтернативы вообще нет.
          Ответить
        • fscanf() с лимитом в формате
          char buf[BUF_LEN];
          char format[16];
          sprintf(format, "%%%ds", BUF_LEN - 1);
          fscanf(file, format, buf);
          Ответить
        • > overflow
          Дело не в overflow, а в обработке концов строк. Альтернативы в стандартной либе нет. Только самому велосипедить.
          Ответить
  • Я хотел погладить его по спине, чтобы успокоить неизвестно откуда взявшуюся ревность, но не решился, чтобы не схлопотать еще.
    Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8