使用字符串作为函数的参数

Using string as parameter for function

我正在尝试使用一个以字符串作为参数的函数。我 运行 收到几条错误消息。首先,它说 string[i] 不是数组、指针或向量,尽管 string 是字符数组。其次,它说我正在做一个指向整数转换的指针。这是我的代码:

#include <stdio.h>
#include <string.h>

void example (char string) {
    int i;
    for (i = 0; i < strlen(string); i++) {
        printf (string[i]);
    }
}

int main (void) {
    example("I like pie");
    return 0;
}

void example(char string) 应该是 void example(char *string)。你声明它接受一个字符,你希望它接受一个字符指针或数组。

此外,您需要告诉 printf 您要给它一个字符:printf("%c", string[i]);.

你的API错了应该是

void example (char *string) { // string is a pointer 
    int i;
    size_t n = strlen(string);
    for (i = 0; i < n; i++) {
        printf ("%c",string[i]); // print character using %c
    }
}

在循环之前计算字符串长度,在每次迭代中调用 strlen() 不是一个好主意。

PS: string 指向的是只读的你不能修改它

您应该使用 void example(char *string) 而不是 void example (char string)

#include <stdio.h>
#include <string.h>

void example (char *string) {
    int i;

    for (i = 0; i < strlen(string); i++) {
    printf ("%c",string[i]);
    }
    printf("\n");
}

int main (void) {
   example("I like pie");

   return 0;
}

你的函数 example 只是接收一个字符。要获取字符串,您可以使用指针。您也可以在 printf 中使用“%s”格式说明符,而不是使用 for循环和strlen()函数。

#include <stdio.h>
#include <string.h>

void example (char *string) {
    int i;
    printf ("%s\n",string);

}