【问题标题】:Pointer and printing trouble指针和打印问题
【发布时间】:2016-10-28 05:15:12
【问题描述】:

定义一个包含三个成员的结构(结构),一个是浮点数,一个是字符串,一个是浮点数的短数组。在同一行,printf 浮点数、字符串和数组的第一个元素,中间有空格。 所以我试图打印一个浮点数、一个字符串和一个浮点数数组。我不断收到错误,此时我只是脑死亡。这是我的代码。

#include <stdio.h>
#include <string.h>
struct Structure {
float b;
char  c ;
float arr[4];
}; 

int main (int argc, char *argv[])

{
int x[4] = {3,5,6,7};
int i;
printf("This is the argument count -> %d\n",argc);
printf("This is argv[0] %s\n",argv[0]);
printf("This is argv[1] %s\n",argv[1]);
for( i = 0; i<=3; i= i + 1)
    {
    printf("%d ",x[i]);
}
printf("\n");
int  var = 20;   // actual variable declaration 
int  *ip;        // pointer variable declaration 

ip = &var;  

printf("Address of var variable: %p\n", &var  );

printf("Value of *ip variable: %d\n", *ip );  

/*char izard[]="trump";
char *ch;
ch = &izard;
printf("Address of var variable: %p\n", &izard  );

printf("Value of *ip variable: %c\n", &izard[4] ); 
*/
struct Structure structure1;
structure1.b = 45.4;
strcpy( structure1.c, "Charizard");
strcpy( structure1.arr, "dog");
printf("integer : %c/n", structure1.c);
//printstructure( &structure1);

return 0;
}

/*void printstructure(struct Structure *name){
printf( "int : %d\n", name->a);
printf( "int : %f\n", name->b);
printf( "int : %c\n", name->c);


}*/

【问题讨论】:

  • 你快到了。一个错误:c 成员应该是 char 数组而不是 char。可能还有其他错误,例如将字符串复制到浮点数组,但编译器是您的朋友,可以帮助您找到它们。我几乎总是使用的一些 gcc 选项是:gcc -Wall -Wextra -pedantic -std=gnu99 -Wwrite-strings。当我进入 nitpick 模式时,我添加 -Wconversion 只是为了它。 ;)

标签: c


【解决方案1】:

您的问题已解决。请看下面的 C 代码 sn-p。

#include <stdio.h>
#include <string.h>

struct Structure 
{
    float b;
    char  c ;
    float arr[4];
}; 

int main (int argc, char *argv[])
{
    int x[4] = {3,5,6,7};
    int i;
    printf("This is the argument count -> %d\n",argc);
    printf("This is argv[0] %s\n",argv[0]);
    printf("This is argv[1] %s\n",argv[1]);
    for( i = 0; i<=3; i= i + 1)
    {
        printf("%d ",x[i]);
    }

    printf("\n");
    int  var = 20;   // actual variable declaration 
    int  *ip;        // pointer variable declaration 

    ip = &var;  

    printf("Address of var variable: %p\n", &var  );

    printf("Value of *ip variable: %d\n", *ip );  

    struct Structure structure1;
    structure1.b = 45.4;
    structure1.c = 'A';
    structure1.arr[0] = 4.4; /* rest of element required then initalize */
    // Error identified Reason: c member of struct which is character type
    /* strcpy( structure1.c, "Charizard"); */ 
    // Error identified Reason: Use character array instead of float type
    /* strcpy( structure1.arr, "dog"); */

    printf("integer : %c \n", structure1.c);

    return 0;
}

【讨论】:

    【解决方案2】:

    您应该检查这些行。

    strcpy( structure1.c, "Charizard");
    strcpy( structure1.arr, "dog")
    

    c 必须是一个字符数组。我不明白你为什么从字符串复制到浮点数。

    struct Structure {
      float b;
      char  c[20] ;
      float arr[4];
    };
    

    【讨论】:

    • strcpy() 函数仅专用于以空字符结尾的字符串。 strcpy( structure1.arr, "dog") 的使用不正确。
    猜你喜欢
    • 2020-06-07
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多