Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 获取由指向数组的另一个指针指向的循环中字符数组的值_C_Arrays_Pointers - Fatal编程技术网

C 获取由指向数组的另一个指针指向的循环中字符数组的值

C 获取由指向数组的另一个指针指向的循环中字符数组的值,c,arrays,pointers,C,Arrays,Pointers,` 结构mylist_in{ 国际注册号; 字符串名; 智力年龄; 字符串地址; 我的列表在*下; }; 结构mylist\u out{ 国际关系; }; 节目记录{ 版本记录{ mylist_out recdis(mylist_in)=1; } = 1; }=0x3124000 #include "student.h" #include <string.h> #include <malloc.h> int main(int argc, char **argv) { C

` 结构mylist_in{ 国际注册号; 字符串名; 智力年龄; 字符串地址; 我的列表在*下; }; 结构mylist\u out{ 国际关系; }; 节目记录{ 版本记录{ mylist_out recdis(mylist_in)=1; } = 1; }=0x3124000

#include "student.h"
#include <string.h>
#include <malloc.h>

int main(int argc, char **argv)
{
CLIENT *c1;
char name,address;
c1 = clnt_create(argv[1],RECORD,REC_VER,"tcp");
int n,i,j,k;
printf("Enter the no. of records to store\n");
scanf("%d",&n);
mylist_in data[n+1];
mylist_out *result;
printf("Enter the details.\n");
for(i=0;i<n;i++)
{
printf("Enter space separated enrollment_no, name, age, address.\n");
scanf("%d %s %d %s",&data[i].enrollment_no,&name,&data[i].age,&address);
data[i].name = name;
data[i].address = address;
}
for(j=0;j<n-1;j++)
{
data[j].next = &data[j+1];
}
data[n-1].next = NULL;
if((result = recdis_1(&data[0],c1))==NULL)
{
printf("Error\n");  
return(0);
}   
printf("%d records written to the file\n",result->res);
exit(0);
}

#include "student.h"
#include <stdio.h>

mylist_out*
recdis_1_svc(mylist_in *inp, struct svc_req *rqstp)
{
printf("Start \n");
static mylist_out out;
int k=0;
FILE *f = fopen("record.txt", "w");
if (f == NULL)
{
out.res = -1;
exit(1);
}
out.res = 0;
;
while (inp != NULL)
{
fprintf(f, "RECORD # %d\nenr_no = %d, name = %s, age = %d, address = %s \n",k+1,inp>enrollment_no,inp->name,inp->age,inp->address);
k++;
inp = inp->next;
}
out.res = k;
fclose(f);
return(&out);
#包括“student.h”
#包括
#包括
int main(int argc,字符**argv)
{
客户*c1;
字符名称、地址;
c1=clnt_创建(argv[1],记录,记录版本,“tcp”);
int n,i,j,k;
printf(“输入要存储的记录的编号\n”);
scanf(“%d”和“&n”);
数据[n+1]中的mylist_;
我列出*结果;
printf(“输入详细信息。\n”);
对于(i=0;登记号,inp->姓名,inp->年龄,inp->地址);
k++;
inp=inp->next;
}
out.res=k;
fclose(f);
返回(&out);
}


`我有一个char数组name,其中使用c中的scanf()函数将一些值存储在for循环中。有一个结构,它包含一些元素以及一个字符指针data.name。现在,当我尝试将name的值存储在结构的不同元素的data.name字段中,并在执行循环后,当我尝试逐个打印data.name的值时,所有这些值都给出相同的值,即name中的最后一个值。我猜这是因为所有的数据元素都指向name变量,而值在scanf()操作期间会被覆盖。有人能帮我解决这个问题吗?

可能是因为您没有为每个字符指针分配新内存。您正在为数据指定名称吗? 如果您可以在这里编写代码,那么就更容易找到问题

char name,address;
从代码的上一行可以看出,您没有
name
的字符数组,但只有
charname

应该如此

char name[100],address[100];
此外,在scanf期间,不需要传递
&
,因为数组会衰减到指针,所以它应该

scanf("%d %s %d %s",&data[i].enrollment_no,name,&data[i].age,address);
对于复制字符串,请使用
strcpy
strncpy


你能分享一下问题代码吗?。。因为这是表示长文本的简单代码?请记住:我们无法从这里看到您的屏幕!所以请把你的密码贴出来@Rahul不发表评论。使用此注释编辑您的问题。结果仍然相同。所有data.name和data.address值都指向姓氏和地址值。strcpy()和strncpy()的情况都会导致分段错误。
strcpy(data[i].name,name);
strcpy(data[i].address,address);