有人能告诉我在使用共享内存的进程之间在C中共享字符串的另一种方法吗?我只是用fors来实现这种伪劣方式。我想使用像strcpy或similars这样的东西。使用int非常简单,但是当指针开始播放时,因为我很难实现。以下是我为寻找其他方式而采取的方式:
int memid,*nptr,i;
char mezua[50];
struct shmid_ds buff;
if ((memid=shmget(IPC_PRIVATE,sizeof(mezua),0600|IPC_CREAT))<0){
perror("shmget error");
exit(-1);
}
printf("%d\n",memid);
if((nptr=(char*)shmat(memid,0,0))==(char*)-1){
perror("shmat error");
exit(-1);
}
printf("Sartu nahi duzun mezua:\n");
__fpurge(stdin);
scanf("%s",mezua);
for(i=0;i<strlen(mezua);i++){
*(nptr+i)=mezua[i];
}
//**HERE WOULD GO THE OTHER WAY TO COPY STRINGS INTO SHARED MEMORY**
for(i=0;*(nptr+i)!='\0';i++)
printf("%c",*(nptr+i));
//**HERE WOULD GO THE OTHER WAY TO READ STRINGS FROM SHARED MEMORY**
if(shmdt(nptr)<0){
perror("shmdt error");
exit(-1);
}
if(shmctl(memid,IPC_RMID,&buff)==-1){
perror("shmctl error");
exit(-1);
}
非常感谢!
有一个很好的代码!!
答案 0 :(得分:0)
您可能希望阅读man strcpy
。
将nptr
设为char*
并执行
strcpy(nptr, mezua); /* Copies from mezuato SHM. */
....
strcpy(mezua, nptr); /* Copies form SHM to mezua. */