c - c中的字符串处理

标签 c string

这是我的代码

char* a[10];
a[0]="'example'";
char* p;
p=strstr(a[0],"'");

我知道如果 strstr 可以找到 ',它会返回一个指向第一个字符的指针,即 '。我想取两个 ' 之间的值并将其保存在 a[1] 中。我该怎么做? 因此 a[1]“example”

最佳答案

strchr() strstr() 似乎是更合适的选择。

使用第一个 strchr() 的结果,+ 1,作为后续 strchr() 的参数,然后是 malloc()strcpy()sprintf()a[1]:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    char* a[10];
    char* p;

    a[0] = "'example'";

    p = strchr(a[0], '\'');
    if (p)
    {
        char* q = strchr(++p, '\'');
        if (q)
        {
            a[1] = malloc((q - p) + 1);
            if (a[1])
            {
                sprintf(a[1], "%.*s", q - p, p);
                printf("[%s]\n", a[1]);
            }
        }
    }
    return 0;
}

将指向字符串文字的指针和 malloc() 数据存储到同一个数组中似乎是一件危险的事情。您必须free() 动态分配内存,但 动态分配内存。代码需要知道 a 中的哪些元素指向动态分配的内存,并且必须是 free()d,而那些不是。

a 初始化为所有 NULL,因此知道填充了哪些元素:

char* a[10] = { NULL };

并且在 NULL 指针上调用 free() 是安全的(什么都不做)。

关于c - c中的字符串处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836475/

相关文章:

c - 为一个用 C 语言记录我的工作时间和工资的程序编写简单的基本代码

python - 如何使用 unicode 正则表达式范围替换字符

c - 我想搜索字符串 s 中字符串 str 的元素,但是当我尝试搜索字符串 s 中的任何内容(例如 str[1])时,它返回 0

c# - 如何在列表中搜索字符串?

python - 如何打印由python中的管道符号分隔的字符串列表中的第一个元素

c - 为什么没有一个全面的c存档网?

c - 我是否正确传递了这些变量? C编程

javascript - 将其中包含数字数组的字符串转换为实际值

c - OpenGL GLint,GLsizei 限制?

c++ - C/C++ 编译器如何根据运算符的优先级和结合性来分离标记?