如何解决如何为其他C文件存储输入字符串的名称?
我想做的是询问某人的名字,然后存储它,以便可以将其用于不同的脚本。这是我到目前为止所拥有的。
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说(空)。
解决方法
主声明
char name[100];
声明了一个在main之外尚不存在的局部变量。
此声明在functions.h
int name;
声明类型int
的全局变量,该变量初始化为零。
您有两种选择。
函数main2
的参数类型为char *
或const char *
int main2( const char *name );
(将函数声明放在标题functions.h
中)
将被称为
main2( name );
或删除全局变量
int name;
在标题functions.h
中,而不是移动本地声明
char name[100];
从标头中的模块main.c
声明为
extern char name[100];
在文件作用域的模块之一中,放置变量声明,例如
char name[100];
在任何情况下,函数main2
的声明都必须放在functions.h
中。
当我尝试运行它时,main2说(空)。
因为您没有向该函数传递任何参数。
您应该使用一些描述性名称,而不要使用main2
。应该只有一个main
,其他任何函数都应具有描述性名称,以描述其功能。例如:
void printit(const char * string)
{
printf("%s\n",string);
}
然后从您的主设备开始,将name
传递给该函数:
printit(name);
作为旁注,您应该初始化char缓冲区,并确保您的scanf
读取的字符不超过应读取的字符:
char name[100] = "";
scanf("%99s",name);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。