在函数中使用char指针,每次尝试访问char指针的第一个char时都会出现seg错误

时间:2018-10-12 19:37:27

标签: c pointers

我正在编写一个程序,在该程序中,我从文件中提取文本并将其转换为卡片,以便以后进行评估。

此代码从文本文件中获取一行,并按空格分析该行。每次有空白时,cardVal都会更新为新值。当我尝试访问cardVal的第一个字符cardVal [0]时,我在函数makeCard中遇到分段错误。但是,在传递给函数之前打印cardVal [0]时,它会提供正确的值。所以我的问题是如何在函数makeCard中访问char指针的单个char。任何帮助是极大的赞赏。

我的代码是:

#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 :(得分:4)

printf("%s\n", buff[0]); //seg fault here 

"%s"期望以char*作为参数,但是您传递了char。使用"%c"打印单个char