打印和计数字符串

时间:2014-11-01 10:35:33

标签: c string printing count

有人可以帮我这个吗?我是C编程的初学者,我不知道如何从stdin中打印表格中的字符串,我怎么能算出有多少字符串......

例如' ./ program select row 3< tab.txt但我不知道怎么做......

int i;

char c(stidn);
int i, *p_i;
p_i = &i;

int select() {
while ((c=getchar()) != EOF)
  {
  i++;
  }
}

int row(){
if (i == (argc 4))
printf("%s\n", p_i);
}

然后我将调用select然后在main()

中行
if ((argc == 4) && (strcmp("select", argv[1]) == 0)){
  if (argc 4 == p_i)
  {
  row;
  }

我知道这是错的,但是我很伤心......我不知道我能做什么:|

1 个答案:

答案 0 :(得分:0)

首先我们需要获得正确的行。我们将这样做计算我们在读取输入时检测到的所有换行。

unsigned int GoToRow(unsigned int row) //First row has index zero
{
    unsigned int nlCount = 0;
    int c = 0;

    while(nlCount < row  && c != EOF)
    {
        c = getchar();

        if(c == '\n')
        {
            nlCount++;
        }
    }
    return nlCount;
 }

接下来我们需要做的是从输入中获取行。

void GetRow(char* pString, int maxchars)
{
    int charCount = 0;

    while((charCount + 1 < maxchars) || pString[charCount - 1] == '\n')
    {
        pString[charCount] = getchar();
        charCount++;
    }
    pString[charCount] = '\0';
}

我们计划的主要功能

int main(int argc, char** argv)
{
    unsigned int rownumber = 3;
    char rowdata[500];

    if(argc == 4 && (strcmp(argv[1], "select") == 0) && (strcmp(argv[2], "row") == 0))
    {
       rownumber = atoi(argv[3]);
    }

    int rowscounted = GoToRow(rownumber);
    GetRow(rowdata, 500);
    rowscounted++;
    rowscounted += GoToRow((unsigned int)-1); //Go to the end of the data
    printf("Number of rows : %d\n Selected row : %s", rowscounted, rowdata);

    return 0;
}