打印出选定数量的字符串问题

时间:2011-04-12 07:08:42

标签: c arrays string

练习说“用两个参数创建一个字符串和一个整数(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。该程序应该打印侯。

4 个答案:

答案 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();