【问题标题】:problems with termination of scanning character after "space bar"“空格键”后终止扫描字符的问题
【发布时间】:2013-04-02 14:20:30
【问题描述】:

当我输入一个单词时,我按空格键然后我不知道为什么,但我需要再输入一个单词或一个字母才能停止扫描。

    #include <stdio.h >
        char string1[20];
    char a='a', b='b', g='g', d='d', e='e', v='v', o='o';

    int i;
    int sum;

    printf (" my word is:\n");
    scanf( "%19s ", string1);
 sum=0;
       for (i = 0; string1[i] !='\0'; i++)
    {
    if (string1[i]==a ) {sum=  +1;} else
    if (string1[i]==b ) {sum=  +2;} else
    if (string1[i]==g ) {sum=  +3;} else
    if (string1[i]==d ) {sum=  +4;} else
    if (string1[i]==e ) {sum=  +5;} else
    if (string1[i]==v ) {sum=  +6;} else
    if (string1[i]==o ) {sum=  +50;} else
    {sum=0;} }
    printf ("%d\n" , sum);
    return 0;
    }

【问题讨论】:

  • 请发布至少可以编译的实际代码
  • 为什么你们要减少我的问题的注释
  • 我不能太长....
  • 如果可行,你可以试试这个吗? printf (" my Sentence is:\n"); scanf( "%s %s\n ", string1,string2);
  • scanf 中不需要\n

标签: c string console


【解决方案1】:
scanf( "%s\n ", string1);

您要求scanf 继续扫描,直到您在单词后键入除空格以外的其他内容。要只阅读一个单词,请单独使用%s

【讨论】:

  • 如何让它在“空格键”后停止扫描?
  • 那我该怎么办?我必须写第二个字吗?如果写了超过 20 个字符会怎样?
  • @GiorgiAzizGvimradze - 如果您只想要一个词,而忽略空格后的所有内容,请按照我所说的那样单独使用 %s。要指定最大字符数,请使用 %10s 之类的内容。
  • printf("我的话是:\n"); scanf("%s", string1);它仍然需要空格键后的另一个字符来给我答案
  • @GiorgiAzizGvimradze - 当我说"%s" 本身时,我的意思不是"%s " :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
相关资源
最近更新 更多