在没有中断的情况下跳过空格而不是换行符并继续

时间:2014-12-07 13:24:17

标签: c arrays

我想从用户读取字符并将字符分配给char数组。但我想跳过除\n(换行符char)之外的空格。按\n时循环结束。我该怎么做 ?我无法使用breakcontinue。谢谢你们所有赞赏的答案。

char *
get_set(char *set) 
{
      char inset[10];
      char ch = ' ';
      int i = 0;

      while(ch != '\n'){
          inset[i] = scanf(" %c", &ch);
          i++;
      }
      set[strlen(inset)] = '\0';
      return (set);
}

3 个答案:

答案 0 :(得分:1)

char *get_set(int size, char *set){// size : size of set as buffer size
    char ch;
    int i;

    for(i = 0; i < size-1 && (ch=getchar()) != '\n'; ){
        if(!isspace(ch))
            set[i++] = ch;
    }
    set[i] = '\0';
    return set;
}

答案 1 :(得分:-1)

您可以使用getchar

while (((ch = getchar()) != '\n')) {
    if(!isspace(ch))
         inset[i++] = ch;
}

getchar从stdin读取下一个字符并将其作为无符号字符串转换为int,或者在文件末尾或错误时返回EOF。

答案 2 :(得分:-1)

一旦尝试这些,     char *

get_set(char *set) 
{
  char inset[SETSIZ];
  char ch = ' ';
  int i = 0;

  while(ch != '\n'){
  if(ch!=32)// ASCII 32 for whitespaces
  inset[i] = scanf(" %c", &ch);
  i++;
  }
  set[strlen(inset)] = '\0';
  return (set);
  }