gpt4 book ai didi

c - 在 C 的方法中返回 typedef 结构

转载 作者:行者123 更新时间:2023-12-02 02:10:44 24 4
gpt4 key购买 nike

我正在尝试创建一个包含解析信息的结构,并且我想创建一个方法来返回填充了数据的结构。这是我目前所拥有的,但我收到一条错误消息,提示 Parser.c: 3: 错误:'parseString' 之前需要 '='、','、';'、'asm' 或 'attribute'

解析器.h

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

typedef struct
{
char* myArguments;
char* myProgramName;
int myNumArguments;

}ParserData;


ParserData parseString(int argc, char** argv);

解析器.c

    #include "Parser.h"

ParserData parseString(int argc, char **argv)
{
ParserData tempData;

tempData.myNumArguments = argc;

return tempData;
}

米什.h

    #include "Parser.h"

ParserData myParserData;

米什.c

   #include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#include "Mish.h"

#define MAXLINE 1024


int main(int argc, char *argv[], char **environ)
{
char buf[MAXLINE];
pid_t pid;
int status;

printf("mish>"); //Print shell

myParserData = parseString(argc, argv);

while (fgets(buf, MAXLINE, stdin) != NULL)
{
buf[strlen(buf) - 1] = 0; /* replace newline with null */

if ( (pid = fork()) < 0)
{
printf("fork error");
}
else if (pid == 0) /* child */
{
execlp(buf, argv[1], (char *) 0);
printf("couldn't execute: %s", buf);
return(127);
}

/* parent */
if ( (pid = waitpid(pid, &status, 0)) < 0)
{
printf("waitpid error");
printf("%% ");
}

}

return(0);
}

最佳答案

这是一种方法(main.c):

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

typedef struct {
char* myArguments;
char* myProgramName;
int myNumArguments;
} ParserData;

ParserData * parseString(int argc, char** argv);

int
main(int argc, char const *argv[])
{
ParserData *foo = NULL;

foo = parseString(argc, (char **)argv);
if (foo) {
fprintf(stderr, "myNumArguments: %d\n", foo->myNumArguments);
free(foo);
}

return EXIT_SUCCESS;
}

ParserData *
parseString(int argc, char **argv)
{
ParserData *tempData;

tempData = malloc(sizeof(ParserData));
tempData->myNumArguments = argc;

return tempData;
}

编译:

$ gcc -Wall main.c -o foo

运行:

$ ./foo 
myNumArguments: 1
$ ./foo bar
myNumArguments: 2

这为结构中的两个char *省去了很多错误检查代码和内存管理。希望它能帮助您弄清楚将哪些内容拆分为头文件和实现文件。

关于c - 在 C 的方法中返回 typedef 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com