傾小靈 发表于 2020-11-30 18:55:20

c语言,字符串输入到数组的问题,求解

本帖最后由 傾小靈 于 2020-11-30 19:00 编辑

#include <stdio.h>
#include <string.h>
int bisearch(int num)
{
        int j = 0,i =0;
        char array;
                scanf("%s",&array);//输入字符串,用for循环把字符串中的空格省略
                for(i; i <= strlen(array) - 1; i++)
                {
                        if(array != ' ')//在实际操作中输入空格,但数组array中没有空格' '的存储
                                {
                                        array = array;
                                        j++;
                                }
                }
                if(num != strlen(array))
                {
                        printf("error");
                        return 0;
                }
}
int main()
{
        bisearch(2);
        system("pause");
        return 0;
}

救救孩子吧,谢谢

北冰羊 发表于 2020-11-30 19:13:06

啥需求额。。。。

傾小靈 发表于 2020-11-30 19:19:32

北冰羊 发表于 2020-11-30 19:13
啥需求额。。。。

就是输入一段带有空格的字符串,然后能将空格忽略后输出。

jackz007 发表于 2020-11-30 19:49:22

本帖最后由 jackz007 于 2020-11-30 19:51 编辑

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
      char c                                                   ;
      for(; (c = getchar()) != '\n' ;) if(c != ' ') putchar(c) ;
      putchar('\n')                                          ;
      system("pause")                                          ;
}
      编译、运行实况:
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
Hello World !
HelloWorld!
请按任意键继续. . .

D:\00.Excise\C>

北冰羊 发表于 2020-11-30 19:57:30

jackz007 发表于 2020-11-30 19:49
编译、运行实况:

好简洁,学习了
for (; (c = getchar()) != '\n';) if (c != ' ') putchar(c);
这个循环怎么跑的能帮解释下吗大佬

傾小靈 发表于 2020-11-30 20:08:00

jackz007 发表于 2020-11-30 19:49
编译、运行实况:

这也太腻害了吧,谢谢大佬

傾小靈 发表于 2020-11-30 20:12:07

jackz007 发表于 2020-11-30 19:49
编译、运行实况:

for (; (c = getchar()) != '\n';) if (c != ' ') putchar(c);
这段可以解释一下吗?看不太懂,拜托了大佬

jackz007 发表于 2020-11-30 20:23:36

本帖最后由 jackz007 于 2020-11-30 20:24 编辑

傾小靈 发表于 2020-11-30 20:12
for (; (c = getchar()) != '\n';) if (c != ' ') putchar(c);
这段可以解释一下吗?看不太懂,拜托了大 ...

       for 循环括号里都有两个分号,分号前面是循环执行前要执行的语句,可以有多个,用逗号分隔即可,两个分号之间是一个布尔表达式,每次循环开始前,先检查表达式的值,如果是真就会继续循环,否则,就会立即结束循环。第二个分号后面的语句是每次循环完成后需要执行的语句,也是可以有多个语句,用逗号分开就可以。
       在本例中,只用到了 for 循环的布尔表达式的部分,这部分就是判断用户按下的是否是换行符,如果不是,就继续循环,循环体内只有一个条件判断,就是判断这个不是换行符的字符是不是空格,如果不是就打印输出,否则,就什么也不做。

永恒的蓝色梦想 发表于 2020-11-30 20:45:00

jackz007 发表于 2020-11-30 20:23
for 循环括号里都有两个分号,分号前面是循环执行前要执行的语句,可以有多个,用逗号分隔即可 ...

为啥不用 while ?

jackz007 发表于 2020-11-30 21:20:03

永恒的蓝色梦想 发表于 2020-11-30 20:45
为啥不用 while ?

      没什么特别的原因,个人癖好而已。

王大锤123 发表于 2020-12-1 15:56:10

永恒的蓝色梦想 发表于 2020-11-30 20:45
为啥不用 while ?

你不感觉用for 结构更紧凑,简洁吗?代码行数更少。

永恒的蓝色梦想 发表于 2020-12-1 19:25:06

王大锤123 发表于 2020-12-1 15:56
你不感觉用for 结构更紧凑,简洁吗?代码行数更少。

没感觉出来呢。不如你自己看一看?for (; (c = getchar()) != '\n';) if (c != ' ') putchar(c);while (c = getchar() != '\n') if (c != ' ') putchar(c);

王大锤123 发表于 2020-12-3 11:04:42

永恒的蓝色梦想 发表于 2020-12-1 19:25
没感觉出来呢。不如你自己看一看?

打扰了大佬{:10_266:}
页: [1]
查看完整版本: c语言,字符串输入到数组的问题,求解