使用string作为函数的参数

时间:2015-04-14 04:11:36

标签: c string function parameters

我正在尝试使用带有字符串作为参数的函数。我遇到了几个错误消息。首先,它说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;
}

4 个答案:

答案 0 :(得分:4)

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

另外,你需要告诉printf你给它一个角色:printf("%c", string[i]);

答案 1 :(得分:4)

你的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指向的是只读的,您无法对其进行修改

答案 2 :(得分:0)

您应该使用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;
}

答案 3 :(得分:0)

您的功能 示例 只会收到一个字符。要获取字符串,您可以使用指针。您也可以使用&#34; %s &#34; printf中的格式说明符,而不是 用于 循环和 strlen() 函数。

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

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

}