将整数数组写入管道
Writing an array of ints to pipe
我在尝试从管道中写入和读取时遇到问题。 我必须创建一个质数数组并将该数组写入管道,以便从管道中读取该数组。 我已经尝试了多种不同的方法,但无法弄清楚。
这是我的代码。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <string>
#include <iostream>
#include <sstream>
#include <string.h>
using namespace std;
int main(int argc, char *argv[]){
int n = 10000;
int array[n] = {0};
int nums[n] = {0};
int k = 0;
int answer[argc] = {0};
//this loop makes an array or prime numbers acording to the node
//if that node number is not a prime number it puts a 0 in that node
for(int i =2; i < n; i++){
for(int j = (i*i); j < n; j+=i){
array[j-1] = 1;
}
}
//this loop makes an array of all the prime numbers;
for(int i = 1; i < n; i++){
if(array[i -1] == 0){
nums[k] = i;
k++;
}
}
//this loop puts the selected prime numbers in the array
for(int j = 1; j < argc; j++){
int num = atoi(argv[j]);
answer[j - 1] = nums[num];
}
//this loop prints the primes for testing
for(int i = 1; i < argc; i++)
cout << answer[i - 1] << endl;
int fd[2], nbytes;
pid_t childpid;
string number;
int readbuffer[90];
string numbers;
pipe(fd);
if((childpid = fork()) == -1){
perror("fork");
exit(1);
}
if(childpid == 0){
close(fd[0]);
for(int i = 0; i < argc; i ++){
write(fd[1], &answer[i], sizeof(int));
}
exit(0);
}
else{
close(fd[1]);
for(int i = 0; i < argc; i++){
nbytes = read(fd[0], readbuffer, sizeof(int));
printf("recieved string: %s", readbuffer);
}
}
}
编写 int 值的字节编码
write(fd[1], &answer[i], sizeof(int))
正确阅读它们
nbytes = read(fd[0], readbuffer, sizeof(int))
但尝试将它们打印为 C 字符串
printf("recieved string: %s", readbuffer)
您的编译器应该在这里抱怨错误的类型。替换为
printf("...%dn",*readbuffer);
请注意,您在代码C++时使用 C 流。最好使用C++流...
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '