繁体   English   中英

使用指针更改函数中数组的值的麻烦

[英]Trouble with changing value of array in function using pointer

我正在尝试编写将提示用户输入字符串的代码,然后打印该字符串。 然后它将使用函数“初始化”将数组中的每个值更改为“ a”,最后一个值除外,该值将更改为“ \\ 0”。 然后,调用函数将打印更新的字符串。

这是我的代码:

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

void initialize(char (*firstString)[50]);

void main(void)
{
   char firstString[50];

    printf("Enter a string: ");
    scanf("%s", firstString);
    printf("%s", firstString);
    initialize(&firstString);
    printf("%s", firstString);
}

void
initialize(char (*firstString)[50])
{
    int i;
    for (i = 0; i < 50; i++) {
        *firstString[i] = 'a';
        *firstString[49] = '\0';
    }
}

任何帮助表示赞赏。

编辑:

这是工作代码。 谢谢您的帮助!

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

void initialize(char firstString[50]);

void main(void)
{
   char firstString[50];

    printf("Enter a string: ");
    scanf("%s", firstString);
    printf("%s", firstString);
    initialize(firstString);
    printf("%s", firstString);
}

void
initialize(char firstString[50])
{
    int i;
    for (i = 0; i < 50; i++)
        memset(firstString, 'a', 49);
    firstString[49] = '\0';
}

[]优先级比*因此*firstString[x]被解析为*(firstString[x]) 请参阅C运算符优先级

因此,您需要编写(*firstString)[x]以获得正确的优先级。

另外,您的函数可以简单地写为:

void
initialize(char (*firstString)[50])
{
    memset(firstString, 'a', 49);
    (*firstString)[49] = '\0';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM