gpt4 book ai didi

c - 学习C : what's wrong in my pointer code?

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:35 26 4
gpt4 key购买 nike

我现在正在尝试学习 C,我来自 Java,有些东西对我来说是新的。

我想打印一个字符串并将一个 int 和一个字符串(字符数组)发送到另一个方法。但是我不断收到一些我不知道如何修复的错误。

如果有人能花时间向我解释我的代码中有什么问题,我将不胜感激。这些指示让我现在很迷茫。打印等时何时使用 %s 和 %c...

代码:

#include <stdio.h>

void main()
{
int k = 10;
char string;
char *sptr;
string = "hello!";

int *ptr;

sptr = &string;

ptr = &k;
printf("%s \n", &sptr);
printf("Sending pointer.\n");

sendptr(ptr, sptr);
}

和错误。

test.c: In function ‘main’:
test.c:8:9: warning: assignment makes integer from pointer without a cast
test.c:15:2: warning: format ‘%s’ expects type ‘char *’, but argument 2 has type ‘char **’
tezt.c: In function ‘sendptr’:
tezt.c:8:8: error: incompatible types when assigning to type ‘char[6]’ from type ‘char’

感谢您的宝贵时间! :)

解决了第一个功能。

第二个功能我明白了..

tezt.c: In function ‘sendptr’:
tezt.c:5:2: error: invalid initializer



#include <stdio.h>

void sendptr(int *test, char *fname)
{
char fnamn[] = &fname;
int pt;


pt = *test;
printf("%p \n", test);
printf("%d \n", pt);
printf("%s \n", fnamn);
}

最佳答案

char string;
string = "hello!";

第一个问题:您将 string 声明为单个字符,而不是数组。此外,您只能在单个语句中将数组初始化为字符串文字。

char string[] = "hello!";

第二个问题:sptr 是一个指向字符的指针,因此它必须指向字符串的第一个元素。这些中的任何一个都可以:

char *sptr = string;
char *sptr = &string[0];

然后,在打印字符串的时候,直接传sptr就可以了。

printf("%s \n", sptr);

编辑您的下一个问题。

char fnamn[] = &fname;

您正在尝试将一个char**(指向char 的指针)分配给一个数组。那是行不通的。如果要将fname 指向的字符串复制到fnamn 中,则需要使用strncpy 等函数。

char fnamn[MAX_STRING_SIZE];
strncpy(fnamn, fname, MAX_STRING_SIZE);

话虽如此,如果您只想打印字符串,则直接打印 fname 而无需先将其复制到您的数组中。

关于c - 学习C : what's wrong in my pointer code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7361961/

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