练习说“用两个参数创建一个字符串和一个整数(n)的函数。然后函数将返回前n个字符。这就是我所做的,但是我得到了一个编译错误”[警告]传递`symbolse'的arg 1使得整数指针没有强制转换“。我试图做一些更改,以覆盖此错误,但后来我没有得到我想要的结果或程序崩溃。
#include<stdio.h>
#include<stdlib.h>
void symbolse(char s[50],int n){
int i;
for(i=0;i<n;i++)
printf("%c ",s[i]);
}
main(){
int m;
char a[50];
printf("Give integer: ");
scanf("%d",&m);
printf("Give string: ");
a[50]=getchar();
symbolse(a[50],m);
system("pause");
}
实施例。用户给出m = 3和[50] = House。该程序应该打印侯。
答案 0 :(得分:1)
你可能想要
symbolse(a,m);
而不是
symbolse(a[50],m);
因为你想传递数组(实际上是指向数组的指针),而不是它的第51个(不存在的)元素。
(并且aix指出的问题也存在,但它不是破坏编译的那个。)
答案 1 :(得分:0)
问题在于a[50]=getchar()
。这会将一个字符读入缓冲区中的第50个位置(顺便说一下,它超出了a
的界限)。尝试使用scanf
代替。
symbolse(a[50],m)
也错了。我会告诉你问题是什么。
还有一个提示是打印出输入变量的值,以确保您正确读取它们。
答案 2 :(得分:0)
试试这个......
void symbolse(char s[50],int n){
int i;
for(i=0;i<n;i++)
printf("%c ",s[i]);
}
main(){
int m;
char a[50];
printf("Give integer: ");
scanf("%d",&m);
printf("Give string: ");
fgets(a,sizeof(a),strin); /* get chars from stdin */
symbolse(a,m); /* Call the function giving array's base address */
system("pause");
}
答案 3 :(得分:0)
您不能使用a[50]=getchar();
,因为getchar只需要一个char。
使用scanf("%s",a);
取代a[50]=getchar();