gpt4 book ai didi

c - 我的 Linux 代码中的 C 段错误

转载 作者:行者123 更新时间:2023-11-30 18:50:33 27 4
gpt4 key购买 nike

我现在刚刚学习 C 中的指针,我对它们在我的代码中如何工作感到困惑:

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


#define MAX_ARR 64
#define MAX_STR 32

typedef enum { COMEDY, DRAMA, HORROR, SCIFI
} GenreType;

typedef struct {
char title[MAX_STR];
char director[MAX_STR];
int year;
GenreType genre;
} MovieType;

void initMovie(char*, char*, int*, GenreType, MovieType*);
void printMovies(MovieType*, int);
void readString(char*);
void readInt(int*);


int main()
{
MovieType movie;
MovieType movieArr[MAX_ARR];
MovieType *pMovie;
char t = movie.title;
int arrSize = 0;

printf("Please enter the tile of the movie: ");
readString(t);
printf("The title of the movie is: %c\n", (t));

return 0;
}

void initMovie(char *t, char *d, int *y, GenreType gentype, MovieType *movType)
{

}

void readString(char *str)
{
char tmpStr[MAX_STR];

fgets(tmpStr, sizeof(tmpStr), stdin);
tmpStr[strlen(tmpStr)-1] = '\0';
strcpy(str, tmpStr);
}

void readInt(int *x)
{
char str[MAX_STR];

readString(str);
sscanf(str, "%d", x);
}

我试图要求用户填写电影类型的所有数据,例如 title , director , year正如您所看到的,我当前的方法生成了 segmentation fault ,很明显我做错了什么。 main 之外的所有内容功能不能更改,initMovie 除外函数和 printMovies功能(尚未制作)。

任何提示和指示,双关语,将不胜感激!让我知道我做错了什么以及如何解决它!

最佳答案

您正在将 char t = movie.title; 传递到 readString(t); 中。这是不正确的。 readString 需要一个指针 char*

关于c - 我的 Linux 代码中的 C 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002169/

27 4 0
文章推荐: c - 我的 while 循环上的错误代码,试图逐行读取文件。在C中
文章推荐: c# - 计算字符串中的数字(从 0 到 9)
文章推荐: c# - 将 5 个 List 组合成一个 List
文章推荐: c# - 如何扩展 C# 类