如何使用指针读取和打印数字和字符串?
How to read and print number and string using pointers?
1 年后我正在回忆我的 C 编程技能。所以我决定从头开始。我被这个程序困住了。非常感谢帮助。提前谢谢你。
这是我的代码。
/*Reading a number and string and printing on screen using pointers*/
#include <stdio.h>
main()
{
int number, *ptr,*ptr2;
char string[20];
ptr=&number;
ptr2= &string;
printf("Enter a number");
scanf("%d",&number);
printf("Enter a string");
scanf("%s", string);
printf("Your number is: %d\n", *ptr);
printf("String is %s \n", *ptr2);
}
它要求输入之后是打印数字而不是打印字符串。它显示的不是字符串,而是 分段错误。
以上程序是读取并打印用户的号码和姓名。这是期待的程序,但它不能正常工作。
在您的程序中,ptr2
声明为整数指针,您将其指向 string
。 ptr2
应该是类型 char *
.
在此声明中:
ptr2= &string;
您不需要在数组名称前给出 &
运算符。数组名称转换为指向数组对象初始元素的指针。所以,应该是:
ptr2 = string;
如果您使用 scanf
从用户那里获取输入字符串,请确保防止缓冲区溢出。检查 this and this.
你可以这样做:
#include <stdio.h>
int main()
{
int number, *ptr;
char *ptr2;
char string[20];
ptr = &number;
ptr2 = string;
printf("Enter a number: ");
scanf("%d",&number);
printf("Enter a string: ");
scanf("%s", string);
printf("Your number is: %d\n", *ptr);
printf("String is: %s\n", ptr2);
return 0;
}
很高兴通过它一次:
Best way to get input from the user in C.
1
ptr2
是 int* 类型,string
是 characters.Since 的数组,它们的类型不同,你不能用 [=10= 指向 string
]
您必须将 ptr2
的类型更改为 char*
。 char* ptr2;
2
没有符号 &
或 sizeof
opretator 数组简单地转换为指向第一个元素的指针 array.Which 意味着 string
成为类型char*
。现在让两个变量的类型相等,您可以这样做:ptr2 = string
;
大多数新的 C 程序员都会犯输入 ptr2 = &string
的错误,即上面提到的 wrong.As string
不会转换为指向第一个元素的指针和 &string
type 是 char(*)[]
。同样,两个变量必须具有相同的类型,因此 ptr2
可以更改为 char (*ptr2)[]
,但这会导致令人惊讶的结果:ptr++
现在是整个数组。
1 年后我正在回忆我的 C 编程技能。所以我决定从头开始。我被这个程序困住了。非常感谢帮助。提前谢谢你。
这是我的代码。
/*Reading a number and string and printing on screen using pointers*/
#include <stdio.h>
main()
{
int number, *ptr,*ptr2;
char string[20];
ptr=&number;
ptr2= &string;
printf("Enter a number");
scanf("%d",&number);
printf("Enter a string");
scanf("%s", string);
printf("Your number is: %d\n", *ptr);
printf("String is %s \n", *ptr2);
}
它要求输入之后是打印数字而不是打印字符串。它显示的不是字符串,而是 分段错误。
以上程序是读取并打印用户的号码和姓名。这是期待的程序,但它不能正常工作。
在您的程序中,ptr2
声明为整数指针,您将其指向 string
。 ptr2
应该是类型 char *
.
在此声明中:
ptr2= &string;
您不需要在数组名称前给出 &
运算符。数组名称转换为指向数组对象初始元素的指针。所以,应该是:
ptr2 = string;
如果您使用 scanf
从用户那里获取输入字符串,请确保防止缓冲区溢出。检查 this and this.
你可以这样做:
#include <stdio.h>
int main()
{
int number, *ptr;
char *ptr2;
char string[20];
ptr = &number;
ptr2 = string;
printf("Enter a number: ");
scanf("%d",&number);
printf("Enter a string: ");
scanf("%s", string);
printf("Your number is: %d\n", *ptr);
printf("String is: %s\n", ptr2);
return 0;
}
很高兴通过它一次:
Best way to get input from the user in C.
1
ptr2
是 int* 类型,string
是 characters.Since 的数组,它们的类型不同,你不能用 [=10= 指向 string
]
您必须将 ptr2
的类型更改为 char*
。 char* ptr2;
2
没有符号 &
或 sizeof
opretator 数组简单地转换为指向第一个元素的指针 array.Which 意味着 string
成为类型char*
。现在让两个变量的类型相等,您可以这样做:ptr2 = string
;
大多数新的 C 程序员都会犯输入 ptr2 = &string
的错误,即上面提到的 wrong.As string
不会转换为指向第一个元素的指针和 &string
type 是 char(*)[]
。同样,两个变量必须具有相同的类型,因此 ptr2
可以更改为 char (*ptr2)[]
,但这会导致令人惊讶的结果:ptr++
现在是整个数组。