我正在尝试编写一个程序,该程序使用一个字符串,并使用按引用调用的概念将该字符串复制到另一个char数组,但是我的程序似乎只输出第一个字符
#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);
}
答案 0 :(得分:1)
当您传递指向数组的指针时,不需要此[]
。似乎您正在传递一个指针数组。试试:
#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
。使用nottead fgets
。而且我忘记了,您不必传递数组的地址(&a
),因为直接指向此值,所以您可以直接传递a
。
答案 1 :(得分:0)
&a will give a pointer to pointer not the pointer to first element of the array
a will give you the pointer to the first element to the array
因此,要复制字符串,您应该将指向第一个元素的指针传递给数组,并在函数中仅接收char指针,而复制不起作用