C语言问题,求高手帮忙!!

2024-11-20 23:34:27
推荐回答(5个)
回答(1):

1.输入输出问题,在输入整数或浮点数后面直接输入字符或字符串,要清除一下回车号,或都在输入整数后直接清空缓存,再读取内容
2.越界问题,修正问题1后,如果内存里没有连继的'\0'字符,你这程序会严重越界:
语句 k=j+1;
前加一句
if(c[j]==0) break; //到尾就不要再循环了,防止越界

改完后的效果就是逐个把行首的单词换成空格输出,试验如下:
2
dfdfj asfasd adasd ad adsad adad
asfasd adasd ad adsad adad
adasd ad adsad adad
ad adsad adad
adsad adad
adad
adad

adasda dd fsfs swdsd
dd fsfs swdsd
fsfs swdsd
swdsd
swdsd
右对齐的,一贴上来就不齐了,算了吧

回答(2):

c语言输入之后,以回车结束,但是回车本身还存在在输入流当中,所以调用scanf后,再调用gets时,会直接读取回车,而不是等待输入,这样使得输入1的时候,看上去一闪而过,输入2时才会有一次输入,依此类推。只要在scanf之后清除一下输入流就行了。代码如下:
#include
int main()
{
int n,j,k;
char c[4097];
scanf("%d",&n);
fflush(stdin);
while(n)
{
k=0;
gets(c);
while(c[k])
{
for(j=k;c[j];j++)
{
if(c[j]!=' ')
c[j]=' ';
else
break;
}
printf("%s\n",c);
k=j+1;
}
n--;
}
return 0;
}

最后,说一句,这段代码真牛逼,谁写的?

回答(3):

经过测试发现。gets(c)这个函数,把 回车 都当做是输入一次了,如果你先输入2,按2下回车都跳出了,输入3,按3下回车就输出

回答(4):

请问下你这个函数的目的是什么?while(n)的目的是用来控制可以输入几个C数组数据是吗?怎么感觉你这个函数的目的是要把这个C数组给变空的字符串,不知道我理解你的意思了是不?

回答(5):

scanf("%d",&n);后面加上 scanf("%c",&ch);