小编Ada*_*ate的帖子

访问在指向strtok的字符数组的指针中传递的变量时获取不正确的值

这是我的代码

//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)

c arrays pointers strtok

5
推荐指数
1
解决办法
80
查看次数

当仅使用一个(根)记录器时,Log4net重复条目

我的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项目的控制器类中调用此方法.

我已经读过其他问题,当使用多个记录器并将消息传播到根记录器时会发生这种情况,但是,我在这个实例中只使用了根记录器.

c# log4net log4net-configuration amazon-cloudwatchlogs

5
推荐指数
1
解决办法
891
查看次数

返回受更新查询影响的所有主键

是否可以检索受更新查询影响的所有主键?例如:

表:

+-------------+---------+--------+
|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

sql t-sql sql-server ssms

4
推荐指数
2
解决办法
3096
查看次数

尝试通过指针到指针函数调用为字符串分配内存时出现分段错误

我启动我的字符串并像这样调用我的函数:

int main() {
...
char *fileBuffer;
readFileToBuffer("/tmp/file.txt", &fileBuffer);
...
}
Run Code Online (Sandbox Code Playgroud)

此函数的目的是获取变量的内容file.txt并将其放入fileBuffer变量中.因为内容file.txt是动态的,我fileBufferreadFileToBuffer()函数中动态分配内存,如下所示:

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搜索了,这似乎是在函数内部分配内存时的正确方法.

知道为什么会这样吗?

c malloc file-io pointers segmentation-fault

2
推荐指数
1
解决办法
88
查看次数