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