69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include<string.h> //strcmp要string头文件
int main (){
char *zh=0;
zh=(char *)malloc(sizeof(char)*20);
scanf("%s",zh);
if(strcmp(zh,"good")==0){
printf("成功");
}
else{
printf("输入错误");
}
free(zh);//和malloc对应,有malloc就要有对应的free
return 0;
}
#include <stdio.h>
int main (){
char *zh=0;
zh=(char *)malloc(sizeof(char)*20);//分配了20个空间
scanf("%s",zh);//%s是输入字符串,%c是单个字符
//scanf("%c",&zh); 这样用zh,应该是char类型,而不是char*
if(strcmp(zh,"good")==0){ //字符串要用strcmp比较,=表示赋值,不一样。
//如果zh是刚才说的char类型,应该用zh=='g',和单个字符比较
printf("成功");
}
else{
printf("输入错误");
}
return 0;
}
char *zh="";//zh只是一个指针,而且这里又指向一个空字符串,空字符串是个数值常量,后文不能修改,你却尝试修改了
//如果作为存储字符,必须使用数组或者动态分配
char zh[32]="";
or
char *zh = malloc(32);
2.采集字符串,使用的控制符是scanf("%s", zh);c是采集单个字符
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[10] = {0};
if (scanf("%s", buf) == 1)
{
if(strcmp(buf,"good") == 0)
{
printf(" You are success!\n");
}
else
printf("You are failed!\n");
}
return 0;
}
上面的例子参考下!
出现段错误是因为没有分配内存地址引起的!