如何从函数返回一个地址并在main中收集?

时间:2014-04-12 14:53:08

标签: c

#include<stdio.h>
#include <stdlib.h>
#include<fcntl.h>
main()
{
    int fd, retval, i;
    int ptr;
    char buff[1000];
    system("ps -A --no-headers -o pid>pid.txt");
    fd = open("pid.txt", O_RDONLY);
    retval = read(fd, buff, 1000);
    buff[retval] = '\0';
    int count= get_count(buff);
    ptr = get_each_pid(buff, count);
    for(i=0; i< count; i++)
    printf("%d \n", *(ptr+i));

}

int get_each_pid(char *pids, int count)
{
    int val, i, j=0, k=0,l=0;
    char temp[10];
    int *p= (void *)malloc(count);
    for(i=0; pids[i]!='\0'; i++)
    {
        if(pids[i]!=' ')
        {
            temp[j]= pids[i];
            j++;
            if(pids[i+1]=='\n')
            {
                temp[j]='\0';
                val=atoi(temp);

                //  printf("int: %d \n", val);
                for(k=l; k<=l; k++)
                    *(p+k)=val;
                i++;
                l++;
                j=0;
            }
        }
    }
    return p;
}

int get_count(char *str)
{
int i, count=0;
    for(i=0; str[i]!='\0'; i++)
    {
        if(str[i]=='\n')
            count++;
    }
    return count;
}

在这里,我希望获得系统中的所有进程ID,并希望逐个打开。为了实现我需要将所有pid存储在txt文件中,将每个字符串转换为整数并将其存储在一个数组中:如果正常,请在此处输入代码。问题是我想将起始地址返回给main函数。有谁可以请检查这个。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

您应该将get_each_pid函数原型更改为:

int* get_each_pid(char *pids, int count)

因为你正在返回一个指针