我遇到了一个问题,我尝试对其进行研究,但无法真正找到我正在寻找的答案。
我正尝试在 C 中以这种方式接收多行文本文件
./{base_name} < input.txt
input.txt 包含
54
37
100
123
1
54
我已经通过实践得到它了
scanf("%[^\t]",s);
但我想获取每个数字并将 C 字符串解析为一个整数数组,也许可以使用 atoi()。我非常不确定该怎么做。
现在我的代码是这样的
int main(int argc, char *argv[]){
char str[1000];
scanf("%[^\t]",str);
printf("%s\n", str);
}
有没有办法利用 argc 和 **argv 来做到这一点,或者采用另一种巧妙的方法来获取输入并将其制成一个 int 数组。
我正在编译:
gcc -w --std=gnu99 -O3 -o {base_name} {file_name}.c -lm
最好的办法就是将其作为 .txt 文件并使用 fopen 等,但作业要求我将输入作为 ./{base_name} < input.txt
我得到了一个有效的答案。除此之外,我还有这段代码也运行良好。但是会推荐接受的答案,因为它定义了输入数组的大小。非常感谢您的帮助。
#include <stdio.h>
int main(){
char s[100];
int array[100];
while(scanf("%[^\t]",s)==1){
printf("%s",s);
}
return 0;
}
最佳答案
为什么不直接将输入读取为整数?
//test.c
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[]){
int n;
int i;
int *arr;
/*Considering first value as number of elements */
/*Else you can declare an array of fixed size */
fscanf(stdin,"%d",&n);
arr = malloc(sizeof(int)*n);
for(i=0;i<n;i++)
fscanf(stdin,"%d",&arr[i]);
for(i=0;i<n;i++)
printf("%d ",arr[i]);
free(arr);
return 0;
}
现在使用:
./test < input.txt
假设输入.txt:
6 <- no. of elements (n)
54
37
100
123
1
54
关于c - 从 ./{base} < input.txt 中的多行输入获取数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450781/