Используя указатель char в функции, вы получаете ошибку seg, когда пытаетесь получить доступ к первому символу char указателя - PullRequest
0 голосов
/ 12 октября 2018

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

Этот код берет строку из текстового файла и анализирует строку по пробелу.Каждый раз, когда есть пробел, cardVal обновляется с новым значением.Когда я пытаюсь получить доступ к первому символу cardVal, cardVal [0], я получаю ошибку сегментации в функции makeCard.Однако при печати cardVal [0] перед переходом к функции она выдает правильное значение.Поэтому мой вопрос заключается в том, как я могу получить доступ к единственному символу указателя в функции makeCard.Любая помощь очень ценится.

Мой код:

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

int main(int argc, char* argv[])
{
    FILE *fp;  
    unsigned long len = 0; 
    unsigned long read;     
    char *line = NULL; 
    char * cardVal;

    fp = fopen(argv[1], "r");           

    if(fp != NULL)
    {   //checks if files open
        while((read = getline(&line, &len, fp)) != -1)
        { //gets a line
            cardVal = strtok(line, " "); //parses line 
            cardVal = line;

            while(cardVal != NULL)
            {   //parses line until NULL 
                printf("%c\n", cardVal[0]); //prints 1st char successfully
                cardVal = strtok(NULL, " ");        
            }           
        }
    }

    void makeCard(char * buff)
    {
        printf("%s\n", buff[0]); //!!!!SEG FAULT HERE!!!!
    }                   
}

1 Ответ

0 голосов
/ 12 октября 2018
printf("%s\n", buff[0]); //seg fault here 

"%s" ожидает char* в качестве аргумента, но вы передаете char.Используйте "%c" для печати одного char с.

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