#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct hui{
char *data;
int top;
} *Hui;
int IsHui(char *s);
void main() {
char c[100];
printf("Enter:\n");
gets(c);
if(IsHui(c))
printf("Is\n");
else
printf("NO\n");
}
int IsHui(char *s) {
int n = strlen(s);
Hui S = (Hui)malloc((n/2)*sizeof(char)+sizeof(int));
S->top = -1;
for(int i = 0; i < n/2; i++) {
S->top++;
S->data[i] = s[i];//这一步使程序停止????为什么???
}
char temp;
i = i - 1;
while(S->top>=0) {
temp = S->data[i];
if(temp != s[n-i-1])
return 0;
i--;S->top--;
}
return 1;
}
这是我的回文游戏.为什么S->data[i] = s[i];这一步对结构体中的数组赋值运行不了???晕~~~
在c语言标准中结构体之间是否可以直接赋值?
结构体在C语言中用于组合多个数据类型,它们能够存放不同或相同类型的多个数据。在定义结构体之后,可以通过初始化结构体变量或使用结构体数组来操作它们。结构体定义只表示一种类型,并没有为结构体成员分配实际内存空间。因此,直接对结构体进行赋值是不正确的。例如,定义一个名为“Tea”的结构体,它仅...
C语言,结构体中的数组怎么赋值,?
intmain(void){ structstudentsbao={};printf("%d,%s\\n",bao.id,bao.name);\/\/输出是4224528,空(应该是null)\/\/structstudentsbao={3,"123"};可以。第一种赋值方法 \/\/strcpy(bao.name,"bao");\/\/可以,\/\/printf("%d,%s\\n",bao.id,bao.name);\/\/bao.name="bao";错误“stray'\\351'in...
c语言结构体数组赋值
char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};可写为:char c[]={"C program"};或去掉{}写为:char c[]="C program";注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\\0'。上面的初始化与下面的初始化等价。char c[]={‘...
C\/C++编程笔记:C语言结构体想要直接赋值,应该如何实现?
从结果可以看出,C语言中结构体的直接赋值是可行的。我们可以通过查看struct_assign()函数的汇编实现,从底层了解C语言是如何实现两个结构体之间的赋值操作的。这段汇编比较简单,由于结构体的对齐特性,sizeof(struct Foo)为16,通过四次movl操作将foo1的结构体内容拷贝到结构体foo2中。从汇编上可以看出...
C语言中怎么给一个结构体用scanf进行赋值?
结构体数组指针作为函数参数,通过数组的首地址与偏移量对结构体数组进行scanf的赋值,在函数中通过指针间接访问到其指向的内存。举例:编写函数,输入5个学号(int),5个姓名(字符串),5个成绩数组(每组三个成绩)(int[3]),依次调用函数 include <stdio.h> include <stdlib.h> struct student ...
如何给结构体数组赋值?
C语言只有在定义字符数组的时候才能用“=”来初始化变量,其它情况下是不能直接用“=”来为字符数组赋值的,要为字符数组赋值可以用string.h头文件中的strcpy函数来完成。例如:char a[10] = "123"; \/*正确,在定义的时候初始化*\/ char a[10];a = "123"; \/*错误,不能用“=”直接为字符...
C语言struct对char数组赋值问题
错误的原因同:char a[20];a[20]="djfidj" \/\/这里使用了不存在的 数组元素a[20]a.name[20]="Hellow"; 也是同理 不存在 a.name[20],最后一个数组元素是a.name[19]要记得 定义和引用是不一样的哦 可以用scanf("%s",a.name);...
结构体变量赋值方法?
结构体中的成员如果是字符数组,有几种赋值方式?三种:1按字符赋值。如结构体变量为a,成员为字符数组s[10];那么可以 for(i=0;i10;i++)a.s[i]=xxx;xxx可以是任意字符。比如getchar(),即从终端读取。2用strcpy赋值。如 strcpy(a.s,"test");就是将字符数组赋值为"test"。3用memcpy赋值。...
c语言结构体数组赋值问题 如果用同一个结构体定义了2个不同的数组1和...
不可以,要是指针的赋值就可以,例如 typedef struct a{ int y;};int main(){ struct a aa[3]={{2},{4},{6}}; struct a *bb; bb=aa; printf("%d",(bb[0]).y); return 0;}
求助一个C语言结构体数组赋初值的问题
price; int d;} Test;对结构体赋值,一般是顺序赋值,或者指定赋值 比如 Test test[] = { {1, "abc", 1, 2, 1.2, 3},\/\/对应id, name, level, stock, price, d {.id = 2, .level=3, price=4.2, .stock=2},\/\/这个就是指定赋值,点后面接的是结构体成员名};