gpt4 book ai didi

C函数参数可以设置变量吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:31 24 4
gpt4 key购买 nike

我不知道如何在下面的 C 代码中设置名字和姓氏变量。

printf("Hello, %s, %s\n", firstname, lastname);

看起来 readln 函数的 char [s] 参数正在设置名字和姓氏。

这是否可能,如果可能的话,这叫什么,所以我可以做一些研究。

谢谢

编辑:下面是一个更简单的版本。看起来参数正在设置一个变量。

int foo(char s[]){
s[0]='w';
s[1]='\0';

return 5;
}

int main() {

char name[2];
int wtf;

wtf = foo(name);
printf("%s\n", name);
}

参数char s[]为设置名称


#include <stdio.h>

#define STRLEN 5


int readln(char s[], int maxlen) {
char ch;
int i;
int chars_remain;
i = 0;
chars_remain = 1;
while (chars_remain) {
ch = getchar();
if ((ch == '\n') || (ch == EOF) ) {
chars_remain = 0;
} else if (i < maxlen - 1) {
s[i] = ch;
i++;
}
}
s[i] = '\0';
return i;
}

int main(int argc, char **argv) {
char firstname[STRLEN];
char lastname[STRLEN];
int len_firstname;
int len_lastname;
printf("Enter your first name:");
len_firstname = readln(firstname, STRLEN);
printf("Enter your last name:");
len_lastname = readln(lastname, STRLEN);
printf("Hello, %s, %s\n", firstname, lastname);
printf("Length of firstname = %d, lastname = %d", len_firstname, len_lastname);
}

最佳答案

将数组作为参数传递给函数时,就像传递数组地址一样。然后,函数可以修改这个地址的上下文,即数组本身。

例如,函数可以定义为 int readln(char *s, int maxlen) 并且功能将保持不变。

调用函数时,您可以使用 readln(firstname, STRLEN)readln(&firstname[0], STRLEN)。两者都适用于任一函数定义(它们是正交的)。

一个不错的tutorial关于这个主题。

关于C函数参数可以设置变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43901087/

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