c 修改函数参数中的字符串并取消引用



这里的C有点新,但这就是我正在做的事情。

void do_something(char* str){
  char *new = str[0]+1;
  printf("%s%sn", *str, new);
}
int main(){
  char input[2];
  printf("Enter a two character string: n");
  scanf("%s", input);
  do_something(&input);
}

这是我对do_something()的预期输出

do_something("aa")
.
.
.
aaba

基本上,在do_something()中,我想打印取消引用的输入参数str,然后是参数的修改版本,其中第一个字符使用 ascii 递增 1。

不确定我是否将正确的输入传递到main()函数内部的函数中。

任何帮助将不胜感激。

不确定我是否将正确的输入传递到我的 main() 函数内部的函数中。

不,这是不正确的。

do_something(&input);//不正确,因为输入已经是字符串

您应该将参数传递为

do_something(input);

此外,这个声明看起来真的很麻烦,而不是你想要的:

char input[2]; // this can only hold 1 char (and the other for NUL character)

你真的应该有更大的缓冲区,并且也为 NUL 字符分配,比如

char input[100] = ""; // can hold upto 99 chars, leaving 1 space for NUL

基本上在 do_something() 中,我想打印取消引用的输入参数 str,然后打印参数的修改版本,其中第一个字符使用 ascii 递增 1。

您可以直接修改函数do_something中的字符串(无需在其中创建另一个指针 - atm 这是完全错误的)

void do_something(char* str){
    // char *new = str[0]+1;  // <-- remove this
    str[0] += 1;   // <-- can change the string passed from `main` directly here
    printf("%sn", str);
}

试试这个:

void do_something(char* str)
{
    char new = ++str[0];
    printf("%c %sn", new, str);
}

相关内容

最新更新