我有一个我正在下面使用的课程.我正在将此类用于我的Windows应用程序.但是,当我从我的应用程序ReadInConfig()调用该方法时,它成功读取并填充数据表,并分配_sip_ip地址.
在我的Windows应用程序中,我有以下内容.但是,它没有给我分配它的sip_ip.
ConfigSIP readIn = new ConfigSIP();
readIn.ReadInConfig();
string sip_ip = readIn.sip_ip(); // Get nothing here.
Run Code Online (Sandbox Code Playgroud)
我在想,因为数据表分配的_sip_ip是一个不同的对象,而不是执行此操作readIn.sip_ip();
有什么办法可以解决这个问题吗?
非常感谢,
public class ConfigSIP
{
private string _sip_ip;
// Fill the data table and assign the sip ip.
public void ReadInConfig()
{
DataTable dt = new DataTable("Admin");
dt.ReadXmlSchema(@"C:\Config.xml");
dt.ReadXml(@"C:\Config.xml");
_sip_ip = dt.Rows[0]["Sip_ip"].ToString();
}
// Return the sip ip address.
public string sip_ip()
{
return _sip_ip;
}
}
Run Code Online (Sandbox Code Playgroud) C#2008
我使用以下代码来加密和加密邮件.但是,当我尝试解密时,我收到"错误数据"错误.
我的代码下面有什么问题吗?
非常感谢,
public string encryptText(string text)
{
try
{
TripleDESCryptoServiceProvider encrypt = new TripleDESCryptoServiceProvider();
encrypt.Key = new byte[] { 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 144, 89, 55, 34, 21, 13, 8, 5, 3, 2, 1, 0 };
encrypt.IV = new byte[] { 1, 2, 3, 5, 8, 13, 21, 34 };
byte[] byteText = Encoding.Unicode.GetBytes(text);
ICryptoTransform encryptor = encrypt.CreateEncryptor();
byte[] encryptedText = encryptor.TransformFinalBlock(byteText, 0, byteText.Length);
return Encoding.Unicode.GetString(encryptedText);
}
catch (Exception ex) …Run Code Online (Sandbox Code Playgroud) 我写了一个练习指针和分配内存的问题.
但是,当我释放内存时,我正在获得堆栈转储.我在正确的地方解放了吗?我的程序还有什么问题可以使它不安全吗?
void display_names(char **names_to_display, char **output);
int main(void)
{
char *names[] = {"Luke", "John", "Peter", 0};
char **my_names = names;
char *new_output[1024] = {0};
size_t i = 0;
// Print the ordinal names
while(*my_names)
{
printf("Name: %s\n", *my_names++);
}
my_names = names; /* Reset */
display_names(my_names, new_output);
// Print the updated names
while(new_output[i])
{
printf("Full names: %s\n", new_output[i]);
i++;
}
// Free allocated memory
free(new_output);
getchar();
return 0;
}
void display_names(char **names_to_display, char **output)
{
while(*names_to_display)
{
*output = …Run Code Online (Sandbox Code Playgroud) 我只是测试一个我想测试的小程序.
我想知道是否有办法使用stderr来显示实际的错误.
例如,如果文件不存在.我可以显示标准错误吗?
我正在使用stderr,我想通过使用它,我可以显示实际错误是什么.
例如.如果文件没有退出.是否有任何错误发送到可以显示的stderr?
我希望我对自己的问题很清楚.
非常感谢任何建议.
#include <stdio.h>
#include <string.h>
int main(void)
{
char buffer[100] = {'\0'}; /* declare and clean buffer */
FILE *fp;
int len_of_buff = 0;
fp = fopen("licenseURL.txt", "r");
if(fp == NULL)
{
fprintf(stderr, "There was a error opening a file ???");
exit(1);
}
fgets(buffer, sizeof(buffer), fp);
len_of_buff = strlen(buffer);
buffer[len_of_buff + 1] = '\0'; /* null terminate */
printf("The url is: [ %s ]\n", buffer);
fclose(fp);
}
Run Code Online (Sandbox Code Playgroud) GCC
我刚刚回到c编程,我只是练习结构.但是,我有一个嵌套结构,我想从另一个初始化结构填充.但是,我不认为我的技术是正确的方法.
任何建议都是最有帮助的,
#include <stdio.h>
typedef struct
{
char name[20];
int age;
} NAME_AGE_STRUCT;
typedef struct
{
int ID;
NAME_AGE_STRUCT info[];
} DETAILS_STRUCT;
int main(void)
{
DETAILS_STRUCT details;
NAME_AGE_STRUCT extra_details [] = {
{ "john", 34 },
{ "peter", 44 },
};
printf("=== Start program\n");
details.ID = 2;
details.info = extra_details;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用具有成功宏的API,即"NT_SUCCESS".然而,他们没有一个失败.所以通常我必须这样做.
if(something failed)
return !NT_SUCCESS;
else
return NT_SUCCESS;
Run Code Online (Sandbox Code Playgroud)
拥有!NT_SUCCESS我不认为是非常可读的.所以我决定这样做:
#define SUCCESS NT_SUCCESS
#define FAILURE (!NT_SUCCESS)
Run Code Online (Sandbox Code Playgroud)
编辑=============================
#define ENT_NOERR 0 /* No error */
#define NT_SUCCESS ENT_NOERR /* synonym of ENT_NOERR */
Run Code Online (Sandbox Code Playgroud)
这就是NT_SUCCESS的声明方式,我做的也是可以的.
那可以吗?
非常感谢任何建议,
GNU Emacs 23.1
我正在使用iswitchb.但是,当我按下时,C-x b我会得到一个缓冲区列表.但是,我不想显示一个像scratch,Messages,GNU Emacs等.只是我自己打开的缓冲区.
所以我正在寻找一种忽略这些缓冲区的方法.这就是我的配置.但是,它不会忽略我不想要的缓冲区.我做错了什么吗?
;; Setup iswitchb to select different buffers, ignore buffers to reduce list
(iswitchb-mode 1)
(setq iswitchb-buffer-ignore '("*scratch*"))
(setq iswitchb-buffer-ignore '("*Messages*"))
(setq iswitchb-buffer-ignore '("*GNU Emacs*"))
(setq iswitchb-buffer-ignore '("*compilation*"))
Run Code Online (Sandbox Code Playgroud)
非常感谢任何建议,
gcc 4.4.4 c89
不知道为什么我收到此错误.
在我的头文件中,我有以下内容
handle.h
typedef struct Handle_t Handle
Run Code Online (Sandbox Code Playgroud)
在我的实现文件中
handle.c
struct Handle {
size_t id;
char *name;
};
Handle* create_handle(size_t id)
{
Handle *hdev = NULL;
hdev = malloc(sizeof(*hdev)); /* Error */
.
.
}
Run Code Online (Sandbox Code Playgroud)
非常感谢任何建议,
gcc 4.4.4 c89
我不断得到一个"不能解除对不完整类型的解释".
但是,我确信我的结构类型完整.我返回Network_t实例,它是指向已分配内存的指针.我应该能够解除那种记忆.
非常感谢任何建议,
我在头文件中有这个:driver.h
typedef struct Network_t Network_t;
Network_t* create_network(int id);
Run Code Online (Sandbox Code Playgroud)
实现文件driver.c
#include "driver.h"
struct Network_t {
int id;
};
Network_t* create_network(int id)
{
Network_t *network = malloc(sizeof *network);
if(network) {
network->id = id;
}
return network;
}
Run Code Online (Sandbox Code Playgroud)
在我的main.c
#include "driver.h"
Network_t *network = NULL;
network = create_network(1);
printf("Network ID: [ %d ]\n", network->id); /* Cannot dereference pointer to incomplete type */
Run Code Online (Sandbox Code Playgroud) gcc 4.4.4 c89
我试图定义一些东西.如果它被定义我想做某事,否则我想做一些不同的事情.
#define PARSE_STRING
for(i = 0; i < NUMBER_OF_STRINGS; i++) {
#if defined (PARSE_STING)
/* run code for parsing the strings */
#else
/* run code that doesn't parse the strings
}
#endif
Run Code Online (Sandbox Code Playgroud)
当我在我的函数中尝试上面的代码时,我似乎在我的代码中得到了其他错误.但是,如果我注释掉#define PARSE_STRING它编译好了.我只是想知道我需要#define PARSE_STRING吗?
非常感谢任何建议,
======编辑更新的解决方案
相反,这样做会更好吗?
#define PARSE_STRING
for(i = 0; i < NUMBER_OF_STRINGS; i++) {
#if defined (PARSE_STRING)
/* run code for parsing the strings */
#elif defined (NO_PARSE_STRING)
/* run code that doesn't parse the strings
#endif
}
Run Code Online (Sandbox Code Playgroud)