当前位置: 代码迷 >> C语言 >> [求助]C语言中字符串的输入问题?
  详细解决方案

[求助]C语言中字符串的输入问题?

热度:105   发布时间:2006-05-10 12:17:00.0
[求助]C语言中字符串的输入问题?
C语言中字符串的输入有两种方法:
char str[100];
一是: scanf("%s",str);
二是: gets(str);

但是下面两个程序,用不同的输入语句结果有一个是错误的.
程序一输出的结果错误.
#include "stdio.h"
main()
{ char str[100],c;
int i,count;
printf("input a array: \n");
scanf("%s",str);
printf("input a char: \n");
c=getchar();
count=0;
for(i=0;str[i]!='\0';i++)
if(c==str[i])
count++;
printf("count=%d\n",count);
}


程序二: 输出的结果正确
#include "stdio.h"
main()
{ char str[100],c;
int i,count;
printf("input a array: \n");
gets(str);
printf("input a char: \n");
c=getchar();
count=0;
for(i=0;str[i]!='\0';i++)
if(c==str[i])
count++;
printf("count=%d\n",count);
}


第一个程序中出现的错误是 c=getchar(); 这个语句不能执行,导致最后输出的count的值为0 .

如果更改了字符串输入语句后,整个程序就能够正确输出结果了.第二个程序能够正确输出结果.

但是字符串输入的两个语句功能都是一样的,为什么在运行时会出现不同的结果?

[此贴子已经被作者于2006-5-10 13:46:20编辑过]

搜索更多相关的解决方案: C语言中  字符  count  输入  

----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <conio.h>

int main(void)
{
char str[100],c;
int i,count;

printf("input a array: \n");
scanf("%s", str);

printf("input a char: \n");
fflush(stdin);
c = getchar();

count = 0;
for(i = 0; str[i] !='\0'; i++)
{
if(c == str[i])
{
count++;
}
}

printf("count=%d\n",count);

getch();
return 0;
}

[此贴子已经被作者于2006-5-10 12:28:24编辑过]


----------------解决方案--------------------------------------------------------
楼主美女,你再写程序格式能好点吗?空格不占用内存,你怎么不舍得用啊
----------------解决方案--------------------------------------------------------
printf("input a array: \n");
scanf("%s",str);
getchar();/* 接受下回车 */
----------------解决方案--------------------------------------------------------
以下是引用论坛在2006-5-10 12:21:00的发言:

#include <stdio.h>
#include <conio.h>

int main(void)
{
char str[100],c;
int i,count;

printf("input a array: \n");
scanf("%s", str);

printf("input a char: \n");
fflush(stdin);
c = getchar();

count = 0;
for(i = 0; str[i] !='\0'; i++)
{
if(c == str[i])
{
count++;
}
}

printf("count=%d\n",count);

getch();
return 0;
}



谢谢!改了之后,运行了一下可以了,可是为什么要这样改呢?有点不太明白。


----------------解决方案--------------------------------------------------------
以下是引用SunShining在2006-5-10 12:27:00的发言:
printf("input a array: \n");
scanf("%s",str);
getchar();/* 接受下回车 */


用了getchar()之后,程序就正确了,非常感谢,可是为什么这里要接受回车呢?
----------------解决方案--------------------------------------------------------
int main(void){
char a[80];
int x;
scanf("%s",a);
x= getchar();
printf("%s,%d\n",a,x);
return 0;
}

你说这个程序为什么x=10?
提示:10是回车的ASCII码
----------------解决方案--------------------------------------------------------
流中有个回车,把它处理掉
----------------解决方案--------------------------------------------------------
同类型的题目还存在一些问题,希望大家帮帮忙!
下面这个程序在原来的程序上作了一些改动,把相同的字符输出,可是在输出相同字符的同时,总是会在结果后面出现一些乱码,也不知道是什么原因。

#include "stdio.h"
#include "conio.h"
main()
{ 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();
for(i=0,j=0;str[i]!='\0';i++)
if(c==str[i])
str1[j++]=str[i];
printf("%s\n",str1);
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
C99上面对于fflush 的定义...

int fflush(FILE *ostream);

ostream points to an output stream or an update stream in which the
most recent operation was not input, the fflush function causes any
unwritten data for that stream to be delivered to the host environment tobe written to the file

----------------解决方案--------------------------------------------------------

  相关解决方案