Я пытаюсь прочитать текстовый файл, содержащий строку «a3rm5t? 7! Z * & gzt9v», и поместить все числовые символы в символьную строку для последующего преобразования в целое число ,Прочитать текстовый файл, сохранить все цифры в строку символов
В настоящее время я пытаюсь это сделать, используя sscanf в буфере после прочтения файла, а затем используя sprintf для сохранения всех символов, найденных с помощью% u в символьной строке str.
Однако целое число, возвращаемое при вызове printf на str, различно при каждом запуске программы. Что я делаю правильно и что я делаю неправильно?
Этот код работает, когда текстовый файл содержит строку типа «23dog» и возвращает 23, но не тогда, когда строка является чем-то вроде 23dog2.
EDIT: Теперь я понимаю, что я должен помещать числовые символы в символ ARRAY, а не только одну строку.
int main(int argc, const char **argv)
{
int in;
char buffer[128];
char *str;
FILE *input;
in = open(argv[1], O_RDONLY);
read(in, buffer, 128);
unsigned x;
sscanf(buffer, "%u", &x);
sprintf(str,"%u\n", x);
printf("%s\n",str);
close (in);
exit(0);
}
Отступ ваш код. – gsamaras
в каком формате? – Broaj
Если я не ошибаюсь, sprintf с% u заканчивает чтение ввода после первого нецифрового символа. Вы должны создать строку с номером перед преобразованием в целое число –