Я пытаюсь написать программу, которая берет строку в качестве аргумента командной строки, а затем запускает указанный аргумент через функцию (str_to_int), которая берет строку в качестве ввода. Однако, когда я пытаюсь скомпилировать программу, я получаю предупреждение о том,C: Аргументы командной строки со строкой
initializing 'char *' with an expression of type 'int' [-Wint
conversion]
char* str = atoi(argv[1]);
^ ~~~~~~~~~~~~~
И когда я запускаю программу, я получаю ошибку сегментации Я протестировал str_to_int много, так что я уверен, что проблема заключается в программе командной строки. Вот код для него.
#include "hw3.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
char* str = atoi(argv[1]);
printf("%d\n", str_to_int(str));
return 0;
}
Может ли кто-нибудь сказать мне, что я делаю неправильно? Благодарю.
'atoi' возвращает' int'. –
Ваш код берет строку ('argv [1]'), преобразует ее в 'int' (' atoi() '), помещает результат в строку (' char * '), которая будет испорчена, и затем преобразует его в 'int' (' str_to_int() '). Какая цель здесь ?! – Biffen
remyabel и Biffen (и компилятор :-)) являются правильными. –