gpt4 book ai didi

c - 在 C 中打印和计算
转载 作者:行者123 更新时间:2023-11-30 17:26:42 24 4
gpt4 key购买 nike

有人可以帮我解决这个问题吗?我是 C 编程初学者,我不知道如何从标准输入打印表中的字符串,也不知道如何计算有多少个字符串...

例如 './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() 中调用 row

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

我知道这是错误的,但我很难过......我不知道我能做什么:|

最佳答案

首先我们需要获得正确的行。我们将通过计算读取输入时检测到的所有换行符来实现此目的。

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;
}

关于c - 在 C 中打印和计算 <tab.txt 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26688383/

24 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com