在C中的Strlen指针

时间:2014-01-05 19:02:20

标签: 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参数与字符串的大小无关;

1 个答案:

答案 0 :(得分:2)

  

程序在strlen崩溃。

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

几个问题

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

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

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

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