gpt4 book ai didi

c - 逐行读取直到找到整数 C

转载 作者:行者123 更新时间:2023-11-30 18:54:33 25 4
gpt4 key购买 nike

尝试创建一个程序来接收文本文件并逐行读取它。然后它找到每行上的两个整数并将它们加在一起。然后,它将包含原始字符串和总计的新行输出到新的文本文件中。我需要帮助添加两个整数,从每一行获取它们,然后将新行放入文本文件。

输入文本文件

good morning hello 34 127
ann 20 45
10 11
fun program and you find the same 90 120
news paper said that 56 11
how do you like 20 5
line number 90 34

首先输出如下所示:然后继续

good morning hello 161

代码:

int processTextFile(char * inputFileName, char * outputFileName)
{
FILE *fp = fopen(inputFileName, "r");//open file to to read
char buff[1024];
char *p, *p1;
int num;
while (fgets(buff, 1024, fp)!=NULL)
{
printf("%s\n", buff);
while(scanf(buff, "%*[^0-9]%d", &num)== 1)
printf("%d\n", num);
//fscanf(fp, "%s", buff);
}

return 0;
}

编辑!!!::

现在我已经能够完成这个任务了。我如何按生产数量对其进行排序?例如:

Time is money 52
here I am 3
21

将按顺序输出到新的文本文件

here I am 3
21
Time is money 52

最佳答案

我使用 strcspn() 的版本应该使用 stdin 进行输入,使用 stdout 进行输出。 (这样你就可以执行 executable <textfile >newtextfile )

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
char line[1000];
while (fgets(line, sizeof line, stdin)) {
char *ptr;
size_t x = strcspn(line, "0123456789");
if (line[x]) {
errno = 0;
int n1 = strtol(line + x, &ptr, 10);
if (*ptr && !errno) {
errno = 0;
int n2 = strtol(ptr, &ptr, 10);
if (*ptr && !errno) {
int n3 = n1 + n2;
printf("%.*s%d\n", (int)x, line, n3);
} else {
printf("%s", line); // line includes ENTER
}
} else {
printf("%s", line); // line includes ENTER
}
} else {
printf("%s", line); // line includes ENTER
}
}
return 0;
}

没有错误检查的相同版本

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
char line[1000];
while (fgets(line, sizeof line, stdin)) {
char *ptr;
size_t x = strcspn(line, "0123456789");
int n1 = strtol(line + x, &ptr, 10);
int n2 = strtol(ptr, &ptr, 10);
int n3 = n1 + n2;
printf("%.*s%d\n", (int)x, line, n3);
}
return 0;
}

关于c - 逐行读取直到找到整数 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30233355/

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