我是c的新手,我正在努力上网,吸收资源以帮助学习。
我开始使用简单的命令提示符类型处理,甚至这给我带来了困难!我正在尽我所能学习指针,但这个想法对我来说很难掌握,所以这里的代码给了我麻烦。我希望这个麻烦的代码的答案将有助于启发我的指针语法。
#include <stdio.h>
#include <stdlib.h>
#include "login.h"
#include "help.h"
#include <malloc.h>
main()
{
if(login()) /* Login runs fine. After the imported */
{ /*login code runs, it takes me to the main screen */
int prac; /* (printf("Type help for a list of commands")) i input*/
char inpt[255]; /* help, the imported help screen runs,then the core
int *ptr; /*dumps. oh and i know the malloc() syntax is wront*/
malloc(255) == ptr; /*that's just the last thing i tried before i posted*/
*ptr == printf("Continuing Program...\n\n");
printf("---Type Help For a List of Commands----\n");
gets(inpt);
if (strcmp(inpt, help) == 1)
{
help();
goto *ptr;
}
}
return 0;
}
答案 0 :(得分:4)
您可能想要查看基本的C。
这是比较,而非作业。该声明泄漏了内存但没有其他影响。
malloc(255) == ptr;
取消引用未初始化的变量,并将其与printf()
的结果代码进行比较。大多数人只是忽略了printf()
的结果。但是,由于ptr
未初始化,因此最多会使程序崩溃并导致分段错误,并且可能会更糟糕。
*ptr == printf("Continuing Program...\n\n");
将字符串与函数进行比较。这可能不会在大多数系统上崩溃,但无论如何都是错误的。
strcmp(inpt, help)
这是无稽之谈,不应该编译。您只能goto
一个标签,*ptr
不是标签。
goto *ptr;
答案 1 :(得分:1)
刚刚修改为我想你想要的,我假设你想得到帮助,然后循环并从用户那里得到另一个命令。
int prac;
char inpt[255];
bool quit = false;
while(!quit)
{
printf("Continuing Program...\n\n");
printf("---Type Help For a List of Commands----\n");
gets(inpt);
if (strcmp(inpt, "help") == 0)
{
help();
}
if (strcmp(inpt, "quit") == 0)
{
quit = true;
}
}
指针不与goto一起使用,而在概念上与标签类似,实际上它们在语言的工作方式上有很大不同。