[此贴子已经被作者于2006-5-10 14:59:47编辑过]
努力学习C语言中!
//把相同的字符输出,
//可是在输出相同字符的同时,总是会在结果后面出现一些乱码,也不知道是什么原因。
#include <stdio.h>
#include <conio.h>
int main(void)
{
char str[100], str1[100], c;
int i, j;
printf("input a array: \n");
scanf("%s", str);
printf("input a char: \n");
fflush(stdin);
c = getchar();
j = 0;
for(i = 0; str[i] != '\0'; i++)
{
if(c == str[i])
{
str1[j++]=str[i];
}
}
str1[j] = '\0';
printf("%s\n",str1);
getch();
return 0;
}
[此贴子已经被作者于2006-5-10 14:16:55编辑过]
以下是 C99 对 fflush 函数的定义:
int fflush(FILE *stream);
如果stream指向输出流或者更新流(update stream),并且这个更新流
最近执行的操作不是输入,那么fflush函数将把任何未被写入的数据写入stream
指向的文件(如标准输出文件stdout)。否则,fflush函数的行为是不确定的。
fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,fflush
函数会给那些流打上错误标记,并且返回EOF,否则返回0。
由此可知,如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用
fflush(stdin) 是不正确的,至少是移植性不好的。
//把相同的字符输出,
//可是在输出相同字符的同时,总是会在结果后面出现一些乱码,也不知道是什么原因。
#include <stdio.h>
#include <conio.h>
int main(void)
{
char str[100], str1[100], c;
int i, j;
printf("input a array: \n");
scanf("%s", str);
printf("input a char: \n");
fflush(stdin);
c = getchar();
j = 0;
for(i = 0; str[i] != '\0'; i++)
{
if(c == str[i])
{
str1[j++]=str[i];
}
}
str1[j] = '\0';
printf("%s\n",str1);
getch();
return 0;
}
真的可以了,没有再出现乱码,实际上就是在str1字符数组后面加上一个结束符号,这样解释可以吗?
千人工程以市场为导向 推动软件产业国际化 |
|
武汉 2006-05-10(中国商业电讯)——目前,在湖北日报报业集团和湖北省劳动与社会保障厅举办的“2005年湖北教育培训机构总评榜”颁奖会现场,千人工程喜获年度大奖,举办单位特别在颁奖词中指出:“在IT培训界,有一个来自武汉本土的品牌,在短短的三年时间里,以其扎实稳健的发展步伐,理性明晰的发展思路和极具前瞻性的培训项目,如一股旋风般迅速张扬起了业界的一面大旗,这就是国家紧缺软件人才千人培养工程,简称为千人工程。” |