По какой-то причине моя программа на C отказывается преобразовывать элементы argv в целые, и я не могу понять, почему.
int main(int argc, char *argv[])
{
fprintf(stdout, "%s\n", argv[1]);
//Make conversions to int
int bufferquesize = (int)argv[1] - '0';
fprintf(stdout, "%d\n", bufferquesize);
}
И это вывод при запуске ./test 50:
50
-1076276207
Я попытался удалить (int), бросив * и & между (int) и argv[1] - первый дал мне 5, но не 50, но последний дал мне вывод, аналогичный приведенному выше. Удаление операции - '0' не сильно помогает. Я также попытался сделать char first = argv[1] и вместо этого использовать first для преобразования, и это достаточно странно дало мне 17 независимо от ввода.
Я очень смущен. Что здесь происходит?
argv[1][0]
(типchar
) ‹-- первый символ первого аргумента (после имени исполняемого файла). Конечно, с этим все равно не проверить, и есть способы получше. Не пытайтесь отбросить ошибку (посколькуargv[1]
печатается какchar*
), потому что это часто просто не работает :-) - person   schedule 20.03.2012