Считать информацию из файла и вывести по центру - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, подскажите пожалуйста в чем косяк программы? Программа считывает 2 строчки из файла и выводит 2 раза подряд первую строчку расположенную по центру и потом вторую строчку с самого начала строки.
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX_LEN 80
  4. char* middle(char* str);
  5.  
  6. int main(void){
  7. char *str = "test";
  8. read_file();
  9. //printf("%s\n", middle(str));
  10. return 0;
  11. }
  12. char* middle(char *str)
  13. {
  14. static char buf[MAX_LEN + 1];
  15. int spaces_needed, str_len;
  16. str_len = strlen(str);
  17. if (str_len >= MAX_LEN ) return str;
  18. spaces_needed = (MAX_LEN - str_len) / 2;
  19. memset(buf, ' ', spaces_needed);
  20. strcat(buf + spaces_needed, str);
  21. return buf;
  22. }
  23. int read_file()
  24. {
  25. FILE *readed_stream;
  26. char path_to_file[1000];
  27. int readed_buffer = 0;
  28. char* data[20];
  29. printf("Enter path to readable file: ");
  30. if(scanf("%s",&path_to_file))
  31. {
  32. if(readed_stream = fopen(path_to_file,"r"))
  33. {
  34. do{
  35. fgets(data,sizeof(data),readed_stream);
  36. printf("%s",middle(data));
  37. }while(!feof(readed_stream)); //readed_stream!=EOF
  38. fclose(readed_stream);
  39. //printf("%s",data);
  40. }
  41. }
  42. }
Содержимое файла test.txt
Листинг программы
  1. first string.
  2. second string.

Решение задачи: «Считать информацию из файла и вывести по центру»

textual
Листинг программы
  1. #include "stdafx.h";
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. #define MAX_LEN 80
  6.  
  7.  char* middle(char *str)
  8. {
  9.     static char buf[MAX_LEN + 1];
  10.     memset(buf,0,MAX_LEN + 1);
  11.     int spaces_needed, str_len;
  12.  
  13.     str_len = strlen(str);
  14.     if (str_len >= MAX_LEN ) return str;
  15.  
  16.     spaces_needed = (MAX_LEN - str_len) / 2;
  17.     memset(buf, ' ', spaces_needed);
  18.     strcat(buf + spaces_needed, str);
  19.  
  20.     return buf;
  21. }
  22.  
  23. int read_file()
  24. {
  25.     FILE *readed_stream;
  26.     char path_to_file[1000];
  27.     int readed_buffer = 0;
  28.     char data[20];
  29.  
  30.     printf("Enter path to readable file: ");
  31.     if(scanf("%s",&path_to_file))
  32.     {
  33.         if(readed_stream = fopen(path_to_file,"r"))
  34.         {
  35.             do{
  36.             fgets(data,sizeof(data),readed_stream);
  37.  
  38.             printf("%s",middle(data));
  39.  
  40.             }while(!feof(readed_stream)); //readed_stream!=EOF
  41.             fclose(readed_stream);
  42.             //printf("%s",data);
  43.         }
  44.     }
  45.     return 0;
  46. }
  47.  
  48. int main(void){
  49.     char *str = "test";
  50.     read_file();
  51.     //printf("%s\n", middle(str));
  52.     return 0;
  53. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы