Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Ошибка сегментирования


Автор: criolit 4.8.2006, 11:21
Привет всем!
Я написал прогу, получил объектный файл но при попытке его запустить мне выдается ошибка: Ошибка сегментирования. Вот код:
Код

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

#define INFO_PATH "/root/info/calls.txt"

typedef struct _INFO_ {
    char pWho[30];
    char pDateTime[30];
    char pDirection[30];
} CALL_INFO ;

int main(int argc, char** args)
{
    time_t now;
    time(&now);

    FILE* infoFile = NULL;

    if (argc == 0) {
        printf("Use syntax:\n\tto add record: pr set username direction\n\tto view: pr view\n");
        return 0;
    }

    if (strcmp(args[1], "set") == 0) {
        if (strlen(args[2]) == 0)
            printf("User name is missing!");
        else if (strlen(args[3]) == 0)
            printf("Direction argument is missing!");
        else {
            if ((infoFile = fopen(INFO_PATH, "a+")) == NULL) {
                printf("Unable to open info file in %s\n", INFO_PATH);
                return 1;
            }

            CALL_INFO info;
            strcpy(info.pWho, args[2]);
            strcpy(info.pDirection, args[3]);
            strcpy(info.pDateTime, asctime(localtime(&now)));

            fwrite(&info, sizeof(CALL_INFO), 1, infoFile);

            fclose(infoFile);
        }
    }
    else if (strcmp(args[1], "view") == 0) {
        if ((infoFile = fopen(INFO_PATH, "r")) == NULL) {
            printf("Unable to open info file in %s\n", INFO_PATH);
            return 1;
        }

        CALL_INFO info;

        printf("Date\tWho\tCall Direction\n");

        while (!feof(infoFile)) {
            fread(&info, sizeof(CALL_INFO), 1, infoFile);
            printf("%s\t%s\t%s\n", info.pDateTime, info.pWho, info.pDirection);
        }

        fclose(infoFile);
    }
    else
        printf("Use syntax:\n\tto add record: pr set username direction\n\tto view: pr view\n");

    return 0;
}

Я только начинаю програмить под Unix, так что не судите строго если я где-то дал маху.
Заранее спасибо.

Автор: criolit 4.8.2006, 13:06
Ох я намудрил. Ошибка вот где:
Код

// было
if (argc == 0) {
...
}

// правильно
if (argc == 1) {
...
}


Вопрос закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)