如何为不同的 C 文件存储输入字符串的名称?
How do I store the name of a input string for a different C file?
我想做的是询问某人的姓名,然后将其存储起来,以便我可以将其用于不同的脚本。这是我目前所拥有的。
main.c
#include <stdio.h>
#include "functions.h"
int main()
{
printf("welcome to the dungeon crawler.\n");
//ask for the name//
printf("please state your name: ");
char name[100];
scanf("%s", name);
printf("hello %s.\n", name);
main2();
return 0;
}
main2.c
#include <stdio.h>
#include "functions.h"
int main2()
{
printf("%s\n", name);
return 0;
}
functions.h
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
int name;
#endif // FUNCTIONS_H_INCLUDED
当我尝试 运行 它时,main2 说 (null)。
When I try to run it, main2 says (null).
因为您没有向该函数传递任何参数。
您应该使用一些描述性名称而不是 main2
。应该只有一个 main
,任何其他函数都应该有描述性名称来描述它的作用。例如:
void printit(const char * string)
{
printf("%s\n", string);
}
然后从你的 main,你需要将 name
传递给那个函数:
printit(name);
作为旁注,您应该初始化您的字符缓冲区,并确保您的 scanf
不会读取比它应该读取的更多的字符:
char name[100] = "";
scanf("%99s", name);
main 中的这个声明
char name[100];
声明了一个在 main 外部不存在的局部变量。
此声明在functions.h
int name;
声明了一个 int
类型的全局变量,它是零初始化的。
你有两个选择。
函数 main2
将具有 char *
或 const char *
类型的参数
int main2( const char *name );
(将函数声明放在header functions.h
)
并且会被称为
main2( name );
或者去掉全局变量
int name;
在 header functions.h
中,而不是移动局部声明
char name[100];
来自 header 中的模块 main.c
声明为
extern char name[100];
在文件范围内的模块之一中放置变量声明,例如
char name[100];
在任何情况下,函数 main2
的声明必须放在 functions.h
.
中
我想做的是询问某人的姓名,然后将其存储起来,以便我可以将其用于不同的脚本。这是我目前所拥有的。
main.c
#include <stdio.h>
#include "functions.h"
int main()
{
printf("welcome to the dungeon crawler.\n");
//ask for the name//
printf("please state your name: ");
char name[100];
scanf("%s", name);
printf("hello %s.\n", name);
main2();
return 0;
}
main2.c
#include <stdio.h>
#include "functions.h"
int main2()
{
printf("%s\n", name);
return 0;
}
functions.h
#ifndef FUNCTIONS_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
int name;
#endif // FUNCTIONS_H_INCLUDED
当我尝试 运行 它时,main2 说 (null)。
When I try to run it, main2 says (null).
因为您没有向该函数传递任何参数。
您应该使用一些描述性名称而不是 main2
。应该只有一个 main
,任何其他函数都应该有描述性名称来描述它的作用。例如:
void printit(const char * string)
{
printf("%s\n", string);
}
然后从你的 main,你需要将 name
传递给那个函数:
printit(name);
作为旁注,您应该初始化您的字符缓冲区,并确保您的 scanf
不会读取比它应该读取的更多的字符:
char name[100] = "";
scanf("%99s", name);
main 中的这个声明
char name[100];
声明了一个在 main 外部不存在的局部变量。
此声明在functions.h
int name;
声明了一个 int
类型的全局变量,它是零初始化的。
你有两个选择。
函数 main2
将具有 char *
或 const char *
int main2( const char *name );
(将函数声明放在header functions.h
)
并且会被称为
main2( name );
或者去掉全局变量
int name;
在 header functions.h
中,而不是移动局部声明
char name[100];
来自 header 中的模块 main.c
声明为
extern char name[100];
在文件范围内的模块之一中放置变量声明,例如
char name[100];
在任何情况下,函数 main2
的声明必须放在 functions.h
.