TL; DR
• 1. Почему этот код выдает ошибку сбоя при запуске?
• 2. Что argv[]
делает?Это получает ваш ввод cmd?И чем он отличается от argv
1,2,3 ... и так далее?
• 3. Вывод не показывает, что ожидается при изменении argv[1]
на VSF.txt
Следующий код выдает ошибку:
File: minkernel\crts\ucrt\src\appcrt\stdio\fopen.cpp
Line: 30
Expression file_name != null_ptr
Идея состоит в том, чтобы напечатать каждую строку файла с соответствующим номером.Я еще не до конца понимаю файлы, и я верю, что argv[1]
это то, что вы пишете в приглашении компилятора, верно?Как это дифференцировать с argv 1,2,3 ... и так далее?
Если я изменяю argv[1]
на VSF.txt
(имя файла), он показывает странные символы (не то, что внутри VSF.txt
)
Вывод показывает все с одной строкой, без пробела и строковая переменная не увеличивается;почему не печатается содержимое VSF.txt
?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main(int argc, char *argv[])
{
FILE *file = stdout;
int lines = 1, start = 1;
char ch;
if ((file = fopen(argv[1], "r")) == NULL)
{
printf("Impossivel de abrir o arquivo :%s", argv[1]);
exit(0);
}
while (ch = fgetc(file) != EOF)
{
if (ch == '\n')
{
lines++;
start = 1;
}
else if (start == 1)
{
printf("%d: ",lines);
putchar(ch);
start = 0;
}
putchar(ch);
}
fclose(file);
}