【发布时间】:2021-12-17 03:55:55
【问题描述】:
我正在尝试从字符串中获取第 n 个字符。但是,它从第 n 个字符开始返回字符串。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *test(char input[],int position){
char *result= malloc(sizeof(char)*100);
result=&input[position];
return result;
}
int main(){
char *k;
k=test("abcdefghi\n",3);
printf("%s",k);
}
上面的代码返回 defghi 而不仅仅是 d。 我不确定这里出了什么问题。
【问题讨论】:
-
如果你的函数应该返回一个字符(
char),为什么要让它返回char *(指向char的指针)?同理,如果你想打印一个字符,为什么要使用%s(打印一个字符串),而不是%c(打印一个字符)? -
另外,我怀疑你根本不需要使用
malloc。 -
您正在泄漏内存,因为您覆盖了从
malloc()返回的result值。 -
如果你真的想接收字符作为给定字符串的偏移量(
input + position会更简单,顺便说一下)你可以通过printf("%c", *k);打印这个单个字符——注意你需要取消引用指针... -
嗨。请阅读How to Ask 并使用tour。
标签: c char printf c-strings function-definition