возврат значения мусора структурной функцией - PullRequest
0 голосов
/ 06 июня 2019
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{

    char sharePath[100];
    char logPath[100];
    char motd[100];

}pathName_t;

void readConfig(const char *config){ 
    FILE *fp = fopen(config, "r");
    pathName_t pathpath;
    int line = 0;
    int index = 0;
    int c;
    c = getc(fp);

    while( c != EOF){

    if( c != '\n' ){  //if c not equal to new line, loop through the entire line
       if( line == 0 ){  //line = 0
       pathpath.sharePath[index] = c;
          }else if( line == 1 ){  //line = 1
          pathpath.logPath[index] = c;
             }else{  //line = 2
             pathpath.motd[index] = c;
             }
             index++;
    }else{  //if c equal to new line, replace \0 from \n to the end of string
       if( line == 0 ){  //line = 0
       pathpath.sharePath[index] = '\0';
          }else if( line == 1 ){  //line = 1
          pathpath.logPath[index] = '\0';
             }else{  //line = 2
             pathpath.motd[index] = '\0';
             }
        index = 0;
        line++;
    }  // else close
    c = getc(fp);
}  //while loop close
    fclose(fp);
}  //readConfig() close



int main(){

    pathName_t pathName;
    readConfig("settings.config");
    printf("%s", pathName.motd);
    printf("%s",pathName.sharePath);
}

Вот результат, который я получаю: �z���

Я намереваюсь создать функцию для чтения и получения пути к хранилищу имен в этом файле в несколькихстрока, в конце концов, структура скомпилирована, но результат кажется неправильным.

1 Ответ

0 голосов
/ 06 июня 2019

Ваша функция ничего не делает.Вы не передаете указатель на локальную переменную или не присваиваете ему возвращаемое значение, и вы печатаете случайный мусор, который был в стеке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...