C语言,如何给3个char变量赋值?不能直接char a='D',这种。要求用printf,scanf.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,如何给3个char变量赋值?不能直接char a='D',这种。要求用printf,scanf.相关的知识,希望对你有一定的参考价值。

参考技术A char
a,b,c;
/*首先定义三个字符型变量*/
scanf("%c,%,c%,c",&a,&b,&c);
/*使用输入函数scanf(),%c即为字符型*/
/*程序结束*/
注意:
1、函数printf()用於输出,而函数scanf()则用於输入;
2、使用输入函数scanf()时,要注意输入数据的类型:
整形(int)对应用%d;
浮点型(float)对应用%f;
字符型(char)对应用%c;
字符串对应用%s;
参考技术B 其实嘛赋值要看你赋值什么
1.scanf("%c%c%c",&a,&b,&c);
输入:abc
2.scanf("%d%d%d",&a,&b,&c)
输入
1
2
3,但是这种输入不安全
3.scanf("%c
%c
%c",&a,&b,&c)了输入
a
b
c

c语言字符串赋值给结构体内字符串数组的问题

我想从键盘输入的很多字符组成的字符串截取前12个做有效字符赋值给链表里一个节点的name[13]
我的截取函数是这么写的,执行完了是我想要的值
char* input_check_char(char input_data[],int data_len,int need_len)//input_data[]待截取字符串,data_len
//为待截取字符串的长度,need_len是结构体中相应字段的长度

char char_need[need_len];
char* pn=char_need;
char* pd=input_data;
int i=0;
if(data_len<=need_len)

pn=input_data;

else

while(*pd!='\n')

if( *pn=='\n')

*(pn+i)='\n';
break;

else

*(pn+i)=*pd;

pd++;
i++;


//char_need[need_len]='\0';//取程序所要长度的字符串以\0截断
printf("%s\n",pn);
return pn;

到了结构体赋值是我用strcpy(move->userName,pn);的,完了又监测到pn是我要的,move->userName就前8个是好的后面就是乱码,何解?

//第一 你的 函数char* input_check_char(char input_data[],int data_len,int need_len)里面

//这样声明的 char char_need[need_len]; 是不对的 需要动态声明

//其次 的确要加上 你注释掉的这行//char_need[need_len]='\0'; 不过内容要改一下

下面看我代码

//运行结果 第一个在 函数中输出的 第二次是在main函数中输出的
abc
abc
Press any key to continue

#include <stdio.h>
#include <string.h>
#include <malloc.h>
char* input_check_char(char input_data[],int data_len,int need_len)//input_data[]待截取字符串,data_len
//为待截取字符串的长度,need_len是结构体中相应字段的长度

char *char_need =(char*)malloc(sizeof(char)*need_len+1); //按照传入参数动态申请字符串数组
char* pd=input_data;
int i=0;
if(data_len<=need_len)

char_need=input_data;

else

while(i<need_len)

if( *char_need=='\n')

*(char_need+i)='\n';
break;

else

*(char_need+i)=*pd;

pd++;
i++;


*(char_need+i)='\0';//取程序所要长度的字符串以\0截断//添加截断
printf("%s\n",char_need);
return char_need;


main()

char *p,s[]="abcdegfghjkdfdfg";
p=input_check_char(s,strlen(s),3);
printf("%s\n",p);
free(char_need); //释放动态指针
参考技术A 你是调试的时候发现的吗?这是因为所有数据空间都会被赋一个随机值。在字符空间也是这要这样,只是因为我们会判断\0,不会用到后面的数据。所以才没有发现。

以上是关于C语言,如何给3个char变量赋值?不能直接char a='D',这种。要求用printf,scanf.的主要内容,如果未能解决你的问题,请参考以下文章

c语言结构体中的一个char数组怎么赋值?

c语言如何给结构体指针赋值?

c语言中,为啥不能对字符指针变量指向的字符串再赋值?

在C语言中能否直接给指针指向的数据赋值?为啥?

vc中把CString变量赋值给一个char变量

c语言字符串赋值给结构体内字符串数组的问题