gpt4 book ai didi

c - 为什么这个程序只打印第一个字符?

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:14 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,该程序采用引用调用的概念将该字符串复制到另一个字符数组,但我的程序似乎只输出第一个字符

#include <stdio.h>
#include <conio.h>
void copy(char *[]);
void main()
{
char a[10];
printf("\t\tPROGRAM TO COPY STRING USING FUNCTION AND POINTER");
printf("\n\t\t--------------------------------------------");
printf("\nEnter the string :");
gets(a);
copy(&a);
getch();
}
void copy(char *p[]){
int i=0;
char b[10];
while(*p!='\0'){
b[i]=*p++;
i++;
}
b[i]='\0';
printf("\nThe string after copying is %s",b);
}

最佳答案

当你传递一个指向数组的指针时,你不需要这个[]。这看起来像是您正在传递一个指针数组。尝试:

#include <stdio.h>
#include <conio.h>
void copy(char* p);
void main()
{
char a[10];
printf("\t\tPROGRAM TO COPY STRING USING FUNCTION AND POINTER");
printf("\n\t\t--------------------------------------------");
printf("\nEnter the string :");
fgets(a, 10, stdin);
copy(a);
getch();
}
void copy(char* p){
int i=0;
char b[10];
while(*p!='\0'){
b[i]=*p++;
i++;
}
b[i]='\0';
printf("\nThe string after copying is %s",b);
}

因为你想传递一个数组,只有一个指针指向第一个字符。然后通过递增指针获取数组中的下一个字符来遍历 thic 数组。

此外你不应该使用gets。使用 istead fgets。而且我忘了,你不必传递数组的地址(&a),因为a直接指向这个值,所以你可以直接传递a

关于c - 为什么这个程序只打印第一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58264933/

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