这是我的代码
//Split up the config by lines
int x;
int numberOfConfigLines = 0;
for (x = 0; x < strlen(buffer); x++)
{
if (buffer[x] == '\n') {
numberOfConfigLines++;
}
}
char *configLines[numberOfConfigLines];
tokenize(configLines, buffer, "\n", numberOfConfigLines);
Run Code Online (Sandbox Code Playgroud)
这个函数的想法是计算缓冲区中的换行量,然后使用以下命令将缓冲区拆分为strtok数组:
#include <string.h>
#include <stdlib.h>
void tokenize(char **arrToStoreTokens, char *delimitedString, char *delimiter, int expectedTokenArraySize) {
//Create a clone of the original string to prevent making permanent changes to it
char *tempString = (char *)malloc(strlen(delimitedString) + 1);
strcpy(tempString, delimitedString);
if (expectedTokenArraySize >= 1) {
arrToStoreTokens[0] …
Run Code Online (Sandbox Code Playgroud) 我的log4net配置如下所示:
<log4net>
<appender name="CloudWatchLogsAppender" type="CloudWatchAppender.CloudWatchLogsAppender, CloudWatchAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger.%method - %message%newline" />
</layout>
<groupName value="agroupname" />
<streamName value="astreamname" />
</appender>
<root>
<level value="INFO" />
<appender-ref ref="CloudWatchLogsAppender" />
</root>
<logger name="Amazon">
<level value="OFF" />
</logger>
</log4net>
Run Code Online (Sandbox Code Playgroud)
在类中,我用log实例化记录器
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Run Code Online (Sandbox Code Playgroud)
并调用Log.Error(消息); 只有一次,但在我的日志中,所有错误都是重复的.此外,在WebApi项目的控制器类中调用此方法.
我已经读过其他问题,当使用多个记录器并将消息传播到根记录器时会发生这种情况,但是,我在这个实例中只使用了根记录器.
是否可以检索受更新查询影响的所有主键?例如:
表:
+-------------+---------+--------+
|idx (PK, int)|FirstName|LastName|
+-------------+---------+--------+
|1 |Jane |Smith |
+-------------+---------+--------+
|2 |John |Test |
+-------------+---------+--------+
|3 |Adam |Smith |
+-------------+---------+--------+
Run Code Online (Sandbox Code Playgroud)
查询:
UPDATE clients SET [LastName] = 'Smith' WHERE [FirstName] = 'John'
Run Code Online (Sandbox Code Playgroud)
我想要的回报:
2
但我也希望这种方法适用于多行...例如:
查询:
UPDATE clients SET [FirstName] = 'test' WHERE [LastName] = 'Smith'
Run Code Online (Sandbox Code Playgroud)
我想要的回报:
1,3
我启动我的字符串并像这样调用我的函数:
int main() {
...
char *fileBuffer;
readFileToBuffer("/tmp/file.txt", &fileBuffer);
...
}
Run Code Online (Sandbox Code Playgroud)
此函数的目的是获取变量的内容file.txt
并将其放入fileBuffer
变量中.因为内容file.txt
是动态的,我fileBuffer
在readFileToBuffer()
函数中动态分配内存,如下所示:
void readFileToBuffer(char *filePath, char **fileBuffer) {
...
FILE *reqFile = fopen(filePath, "r");
fseek(reqFile, 0, SEEK_END);
long fileSize = ftell(reqFile);
fseek(reqFile, 0, SEEK_SET);
*fileBuffer = malloc(fileSize + 1);
fread(fileBuffer, fileSize, 1, reqFile);
fclose(reqFile);
...
}
Run Code Online (Sandbox Code Playgroud)
这导致了分段错误.我已经用Google搜索了,这似乎是在函数内部分配内存时的正确方法.
知道为什么会这样吗?