如果用scanf怎么将带空格的字符串输入到数组中

如果用scanf怎么将带空格的字符串输入到数组中,第1张

C语言中的scanf函数输入字符时,当遇到空格或回车时,认为字符串已经输入到结尾,但是如果开头输入一个空格,scanf还是会继续往下存储直到遇到第二个空格或回车。

因此,要在字符串数组中输入空格,就不要使用scanf,使用gets()或c++的cingetline()函数解决。

祝好运!

char ch[5]表示的是定义了一个字符数组(即字符串),数组单元有5个,每个单元都是字符型,由于字符串是用\0作结束的,5个单元的字符数组实际上能完整存储的只能是长度不超过4个字符的字符串,多了的话就要占用其他单元了(这些单元有可能会被系统分配给其他变量,而能够用来存储字符串的就是你定义的这5个单元的字符数组),可能会出现溢出,也就是有时候会出现输出的字符串后面有乱码

char ch表示定义了一个字符变量,用scanf为其赋值的话应该用%c,即scanf("%c",&ch),它只能表示一个字符

char ch[]数组定义不允许[]里为空

char ch[1]表示的也是一个字符数组,所以你可以输入字符串,同样随便输入就有可能溢出

一、字符数组的定义

一维字符数组:用于存储和处理1个字符串,其定义格式与一维数值数组一样。

char str[20];

二维字符数组:用于同时存储和处理多个字符串,其定义格式与二维数值数组一样。

char country[10][20];

country[i]:第i个字符串

二.字符数组的初始化

字符数组的初始化

1可以通过为每个数组元素指定初值字符来实现。

char str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};

char str[ ]={"I am happy"}; 可以省略花括号,如下所示

char str[ ]="I am happy";

char country[10][20]={“china”,”japanese”,……};

注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的

char str[15];

str="I am happy";

strcpy(str, "I am happy");

不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号“”而不是单引号‘’括起来的)作为初值。

‘a’ “a”区别

三、字符数组的引用

字符数组的逐个字符引用,与引用数值数组元素类似。

(1)字符数组的输入

除了可以通过初始化使字符数组各元素得到初值外,也可以使用getchar()或scanf()函数输入字符。

例如:

char str[10];

…… for(i=0; i<10; i++)

{ scanf(\"%c\", &str);

fflush(stdin); /清除键盘输入缓冲区/

}

这里只是一部分具体你查看这里:http://wwweehomecn/thread-95295-1-1html

C语言中,可以用gets函数来接收输入的字符串(包含空格)。

格式:gets(字符数组名);

功能:gets函数用于将输入的字符串内容存放到指定的字符数组中,输入结尾的换行符'\n'被换成'\0'存储在该数组中。

举例说明如下:

char

str[20];

//

定义一个字符数组,大小为20个字节

gets(str);

//

将用户输入的字符串(可以包含空格)存储到字符数组str中,以回车结束输入

printf("%s",

str);

//

输出用户输入的字符串(包含空格)

注:使用gets函数时,需将头文件#include<stdioh>包含到源文件中。

#include <stdioh>

#include <stringh>//为strlen()函数提供原型

int main()

{ char str[100];

char ch[100];

int i,j=0,length;

printf("请输入字符串: ");

gets(str);//将输入的字符串存入数组str[]中

length=strlen(str);//计算字符串的长度

for(i=0;i<length;i++)//将原字符串中的下标为偶数位元素存入新数组中

{

if(i%2==0)

{

ch[j]=str[i];

j++;

}

}

printf("输入的字符串为: ");

puts(str);

printf("新的的字符串为: ");

for(i=0;i<j;i++)//输出存入ch[]数组中的新字符串

{

printf("%c",ch[i]);

}

printf("\n");

return 0;

}

用数组的:

#include <stdioh>

void addspace(char s[]){

    int n;

    n=0;

    while(s[n]) n++;

    s[n2]='\0';

    n--;

    while(n>=0){

        s[n2]=s[n];

        s[n2+1]=32;

        n--;

    }

}

main(){

    char s[255];

    gets(s);

    addspace(s);

    puts(s);

}

用指针的:

#include <stdioh>

void addspace(char s){

    int n;

    n=0;

    while((s+n)) n++;

    (s+n2)='\0';

    while(n>=0){

(s+n2)=(s+n);

(s+n2-1)=32;

n--;

    }

}

main(){

    char s[255];

    gets(s);

    addspace(s);

    puts(s);

}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12461558.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存