gpt4 book ai didi

c - C中通过指针修改函数中数组的值

转载 作者:行者123 更新时间:2023-11-30 16:53:41 24 4
gpt4 key购买 nike

我已经阅读了很多关于如何做到这一点的文章,但我似乎无法弄清楚我的代码中存在什么问题。我做了多次测试,但似乎都不起作用。

我的问题很简单,我声明了一个数组,将其传递给一个函数,在函数中修改它,然后将修改后的值返回给main。

我想我知道如何通过引用传递值来做到这一点。我已经使用整数变量进行了测试并且它有效,但我似乎无法使用字符数组。

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>
#include <sys/stat.h>

void func1(char *puntf);

int main ()
{
char DIRECTORIO[200];
char *punt = 0;

getcwd(DIRECTORIO, 200);
punt=&DIRECTORIO;

printf("DIR in MAIN is: \t%s\n\n", DIRECTORIO);
printf("PUNT in MAIN is: \t%s\n\n", punt);

func1(punt);

printf("DIR in MAIN after func1 is: \t%s\n\n", punt);

return 0;
}

void func1(char *puntf)
{
char DIRF[200]="/Users";
char *puntero = 0;

printf("puntf from MAIN in func1 es: \t%s\n\n", puntf);
printf("DIRF in func1 is: \t%s\n\n",DIRF);
puntf=DIRF;

printf ("puntero in func1 is:\t%s\n\n", puntero);
printf ("puntf in func1 is:\t%s\n\n", puntf);

}

如果我使用 *puntf=DIRF;它将目录的第一个字母从“C”更改为“P”。

如果我使用 *puntf=*DIRF;它将目录的第一个字母从“C”更改为“\”。

在其他几个选项中,可执行文件会崩溃。

我在将 DIRF 值分配给 puntf 时尝试了很多可能性(真的很多),但我不知道如何获取它。

拜托,有人能指出我的错误吗?

谢谢,胡安

最佳答案

有很多问题。首先,punt = &DIRECTORIO; 无法编译。

puntf=DIRF;只会改变本地的puntf,但不会改变main中的punt指针。

无论如何,使用puntf=DIRF;,您正在尝试将指针分配给局部变量DIRF。请注意,puntf=DIRF; 不会复制字符串,它仅分配一个指针。如果要复制字符串,则需要 strcpy功能。

您可能想要这个:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>
#include <string.h>
#include <sys/stat.h>

void func1(char *puntf);

int main()
{
char DIRECTORIO[200];
char *punt = 0;

getcwd(DIRECTORIO, 200);

printf("DIR in MAIN after func1 is: \t%s\n\n", DIRECTORIO);
func1(DIRECTORIO);
printf("DIR in MAIN after func1 is: \t%s\n\n", DIRECTORIO);

return 0;
}

void func1(char *puntf)
{
char DIRF[200] = "/Users";
printf("puntf from MAIN in func1 es: \t%s\n\n", puntf);
printf("DIRF in func1 is: \t%s\n\n", DIRF);

strcpy(puntf, DIRF);

printf("puntf in func1 is:\t%s\n\n", puntf);
}

关于c - C中通过指针修改函数中数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40782947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com