您好我尝试从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参数与字符串的大小无关;
答案 0 :(得分:2)
程序在strlen崩溃。
可能是因为从stdin输入的字符串大于分配的内存的大小。
几个问题
printf("%stringsize:%d\n",ssize);
显然,%s
被解释为,您将传递一个字符串作为vararg。因此,根据您的格式字符串,您的printf会连续排除两个类型为字符串和整数的参数,但最终会传递一个单例整数。你应该编码为
printf("%%stringsize:%d\n",ssize);
在C中,转换malloc
的返回值是多余的。