gpt4 book ai didi

c - 用getchar替换gets的用法

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:22 25 4
gpt4 key购买 nike

我目前有一个家庭作业,我使用了 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] != '\0' && str[i] !=EOF; i++){
if(str[i] != ' '){
charCount++;
} else {
str[i] = '\0'; //Terminate str
i = -1; //idk what this is even doing?
break; //Break out of the for-loop
}
}

printf("your string: '%s' contains %d of letters\n", 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 终止为 null,以防万一。

关于c - 用getchar替换gets的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35058306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com