我遇到了set_ccs函数的问题。我无法从用户那里获取元素。我该如何解决这个问题?
int main(){
char *ccs;
*ccs =(char*)malloc(sizeof(char) * 80);//i have to use dynamic memory allocation
printf("Enter CCS: ");
set_ccs(&ccs);
free(ccs);
return 0;
}
int set_ccs(char **ccs){
int i = 0;
scanf("%s",*ccs);//Is it better to use fgets? Because scanf seems to count 'enter'
while(*ccs!='\0'){
ccs++;
i++;
}
printf("Length of sequence : %d\n",i);//It always return 3
printf("%s",ccs); //with weird elements
return i;
}
谢谢。
答案 0 :(得分:0)
此:
char *ccs;
*ccs =(char*)malloc(sizeof(char) * 80);
错了,并且没有理智的编译器会接受它。你把指针推到char
,它当然不合适。
应该是:
ccs = malloc(80);
无需按sizeof (char)
进行缩放,即始终为1.
答案 1 :(得分:0)
除了解开你应该使用的答案
Write-Host
你应该让函数char *ccs;
ccs = malloc(80);
接受一个指针:
set_ccs()
从你的主要那样称呼它:
int set_ccs(char *ccs)
然后在您的函数中,您可以使用set_ccs(css);
,如下所示:
scanf()
现在,如果您要查看scanf("%s", css);
,最好在使用之前将“字符串”初始化为'\0'
。您可以使用0
代替calloc(80)
来完成此操作。
如果你需要指向指针(malloc(80)
)的指针,你必须在你的主要指针中创建一个双指针,检查这段代码:
char **ccs