C语言中malloc和字符串问题

#include<stdio.h>#include<stdlib.h>intmain(){unsignedlen,i;printf("entertheletterslen... #include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned len,i;
printf( "enter the letters length\n" );
scanf( "%u", &len );
char *data;
data = ( char * ) malloc (len * sizeof ( char ) );
printf( "enter the data\n" );
for( i = 0; i <len; i++ ){
scanf( "%c", &data[i] );
}
for( i = 0; i <len; i++ ){
printf( "%c", data[i] );
}
printf("%c",data[0]);
free(data);
return 0;
}
printf("%c",data[0]);为什么打不出来,而且存在问题,我待会发截图
abcd下一行怎么会空一行
展开
 我来答
378287007yx
推荐于2016-02-11 · TA获得超过148个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:200万
展开全部
scanf( "%u", &len );//输入len后回车,缓存中有('\n'),被data[0]读取;

scanf( "%u", &len );后面加getchar();去除缓存中'\n'
追问
不太明白缓存什么的,是每次用scanf以后,都要getchar();吗?我记得我原来编东西时,让用户输入行数,再输入列数,列数是没问题的啊,那时候也是输完行数,然后回车的
追答
一般没问题,因为scanf()里面%d,%f,%s一类是从非空格,非‘\n’开始读数,而%c是一个一个读,所有空格,'\n',字符等都会读取。
数据是按回车后才送到内存缓冲区读取。
如for(;(c=getchar())!='\n';)
printf("%c",c);
输入computer
输出computer
而不是ccoommppuutteerr
scanf不会读取'\n'
gets会读取'\n'
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式