c - C 中的 Strlen 指针

标签 c pointers strlen

<分区>

你好,我尝试从 main 中读取一个字符串,然后将其解析为一个函数并找到它的大小,但是我的代码不起作用,你能帮帮我吗?

 //main
         int size=10;
            char *string= (char*) malloc (sizeof(char)*15);

            scanf("%s",string);
            findAllReplacements(NULL,10,string);

//at findAllReplacements

void findAllReplacements(nameInfoT* names,int size,char* expression){
    int ssize=strlen(expression);
    printf("%stringsize:%d\n",ssize);

程序在 strlen 处崩溃。我究竟做错了什么?我给输入“astring”

size参数与字符串的大小无关;

最佳答案

The program crashes at strlen.

可能是因为您从标准输入输入的字符串大于分配的内存大小。

还有几个问题

printf("%stringsize:%d\n",ssize);

显然,%s 被解释为好像您要将字符串作为可变参数传递。因此,根据您的格式字符串,您的 printf 连续排除了两个类型为字符串和整数的参数,但最终传递了一个单例整数。你应该编码为

printf("%%stringsize:%d\n",ssize);

在 C 中,强制转换 malloc 的返回值是多余的。

关于c - C 中的 Strlen 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20937782/

相关文章:

c - 我需要在第 17 行的哪里放置额外的分号

c - 为什么++(*p) 没有给出 l-value required 错误?

c++ - 如何在C++中循环遍历具有不同长度的动态2D数组

C - 如何使用指向结构的指针复制结构

c - 数组声明的问题

c - 为什么扫描时空字符不会添加到字符串末尾?

c - 在片段着色器 cg/Unity 中照亮模型(立方体、球体……)

python - 如何使用 python 编写可以在 c 中读取的二进制结构?

c - 调用约定会阻止可变大小的返回值吗?

c - C语言中带\0的字符串长度