C语言 将 get 的用法替换为 getchar



我目前有家庭作业,我用了gets。教授说我应该改用getchar

有什么区别?

我将如何更改我的代码以使用getchar?我似乎做不好。

法典:

#include <stdio.h>
#include <string.h>
#include <strings.h>
#define STORAGE 255
int main() {
  int c;
  char s[STORAGE];
  for(;;) {
    (void) printf("n=%d, s=[%s]n", c = getword(s), s);
    if (c == -1) break;
  }
}
int getword(char *w) {
  char str[255];
  int i = 0;
  int charCount = 0;
  printf("enter your sentence:n");   //user input
  gets(str);
  for(i = 0; str[i] != '' && str[i] !=EOF; i++){
    if(str[i] != ' '){
      charCount++;
    } else {
      str[i] = ''; //Terminate str
      i = -1; //idk what this is even doing?
      break;      //Break out of the for-loop
    }
  }
  printf("your string: '%s' contains %d of lettersn", str, charCount); //output
  strcpy(w, str);
  //    return charCount;
  return strlen(w); //not sure what i should be returning.... they both work
}
gets()应该

从输入中获取一个字符串并将其存储到提供的参数中。但是,由于缺乏对输入长度的初步验证,它容易受到缓冲区溢出的影响。

更好的选择是 fgets() .

但是,谈到getchar()部分的使用,它一次读取一个char。所以基本上,你必须使用循环不断地从标准输入中读取一个接一个,直到你到达一个换行符(或EOF),这标志着预期输入的结束。

当您读取字符(具有可选验证)时,您可以继续将它们存储在str中,以便在输入循环结束时,您可以在str中准备好输入字符串。

不要忘记空终止str,以防万一。

最新更新