gpt4 book ai didi

c - 我的函数和主要方法有什么问题?

转载 作者:行者123 更新时间:2023-11-30 19:20:20 24 4
gpt4 key购买 nike

我正在编写一个带有 2 个函数和一个 main 函数的 C 程序。第一个函数读取并存储字符(更多描述包含在下面的注释中)。我不确定我是否正确终止了字符串(用 0)??
预先感谢您的帮助!

#include <stdio.h>
#define MAX 20


/* reads a line from the keyboard and stores the characters in the array str.
If the user enters more than max characters, it returns -1. Function should terminate
the char array with a NULL (or 0) */

int getline(char str[], int max){
char c, i;

while((c = getchar()) != '\n'){
str[i] = c;
i = i + 1;
}

str[i] = '\0';

if (i < MAX)
return 0;
else
return -1;
}

/* calculates and returns the length of the array passed to it */
int strlen(char str[]){
int i = 0;

while(str[i] != NULL)
i++;

return i;
}


main(){
char str[MAX];
printf("Please Enter a String less than 20 characters:\n");

if((getline(str, MAX)) == 0)
printf("Length of ‘%s’ = %d", str, (strlen(str)));
else
printf("You Entered more than 20 Characters!");
}

最佳答案

您必须在 getline() 中将 i 初始化为 0。

另一方面,getline() 的第二个参数是 max。但您只在函数中引用了 MAX 。幸运的是,由于调用 getline() 的唯一地方使用 MAX 作为第二个参数,因此您没有观察到任何差异。此外,为了避免写出数组边界,您应该在循环内部检查数组索引,而不是在循环之后检查数组索引。

关于c - 我的函数和主要方法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22467993/

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