有人可以帮我这个吗?我是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;
}
我知道这是错的,但是我很伤心......我不知道我能做什么:|
答案 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;
}