所以我正在尝试编写一个可以读取文件的每一行的ac程序通过命令行传递给它并打印出每一行.我的代码看起来像这样:
#include <stdio.h>
#include <stdlib.h>
int main(void){
char num[20];
for (;;){
if((scanf("%[^\n]s", num)) != 1){
break;
}
printf("%s\n", num);
}
}
Run Code Online (Sandbox Code Playgroud)
unix命令行是:./ printeachline <num.txt
num.txt包含以下行:
01 0111111119 111122222228 123400000000 1234kk444k44 oooo11111111 o dk39754i2oo 002711111116 124145245 246623 0027111111167 888888888888 100900000011
我打算打印出来的是num.txt中的每一行,但是当我输入命令时只打印第一行,即01 0111111119.我怎么能解决这个问题????
您的问题的答案不是如何使用scanf()
来解决您的问题,而是使用fgets()
.scanf()
众所周知,它容易出错,可能导致缓冲区溢出等fgets()
,这是设计用于处理每一行的功能:
while (fgets(num, sizeof num, fp) != NULL)
{
printf("%s", num);
}
Run Code Online (Sandbox Code Playgroud)
fp
是FILE *
指针num.txt
.
归档时间: |
|
查看次数: |
8370 次 |
最近记录: |