如何在C中读取变量名及其对应的值

时间:2018-01-23 22:25:03

标签: c

我一直在搜索,无法弄清楚如何做到这一点。 我正在尝试阅读包含

等内容的文本文件
x 4
y 6
z 9

并将int值设置为之前对应的变量名; 无论如何要做到这一点,或者我必须在读取值后在程序中指定名称。

2 个答案:

答案 0 :(得分:2)

您可以使用几种方法将数据导入与名称关联的程序,具体取决于程序的结构。

如果您的程序中不包含带有这些名称的变量,则无法从文件生成变量。您可以创建一个将名称映射到值的字典,并将其用作“变量”。

我想你也可以有一个字典,将名字映射到现有变量的地址......这样你就可以查找名称然后解析变量来设置它是否在字典中。

作为一个非常广泛的解决方案......如果每次有新文件都可以重新编译(即文件真的是编译时输入,而不是运行时输入)那么你可以使用一些对#include(可能本身预处理成c代码)数据文件进行预处理。

答案 1 :(得分:0)

我认为你要求动态代码生成器那些我当时用于不同目的(生成具有特定值的长字节数组)。生成器将生成一个 public void ConfigureServices(IServiceCollection services) { services.AddDbContext<AppIdentityDbContext>(options => options.UseMySql(configuration["DB_CONN"])); services.AddIdentity<AppIdentityUser, AppIdentityRole>() .AddEntityFrameworkStores<AppIdentityDbContext>() .AddDefaultTokenProviders(); services.AddAuthentication().AddGoogle(googleOptions => { googleOptions.ClientId = "******.apps.googleusercontent.com"; googleOptions.ClientSecret = "******"; googleOptions.SaveTokens = true; googleOptions.AccessType = "offline"; }); services.Configure<IdentityOptions>(options => { options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+ "; options.Lockout.AllowedForNewUsers = true; options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5); options.Lockout.MaxFailedAccessAttempts = 5; options.User.RequireUniqueEmail = true; }); services.ConfigureApplicationCookie(options => { options.LoginPath = "/Security/Login"; options.LogoutPath = ""; options.AccessDeniedPath = "/Security/AccessDenied"; options.SlidingExpiration = true; options.Cookie = new CookieBuilder { HttpOnly = true, Name = ".Test", Path = "/", SameSite = SameSiteMode.Lax, SecurePolicy = CookieSecurePolicy.SameAsRequest }; }); services.AddMvc(); } public void Configure( IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) app.UseDeveloperExceptionPage(); app.UseAuthentication(); app.UseMvcWithDefaultRoute(); } 文件,其中包含从另一个文件读取的变量名称。这个问题是,运行时很难做到这一点,如果你要求运行时解决方案,其他人已经给出了答案。