У меня проблема с аргументами командной строки. Мне нужно написать программу, которая будет подсчитывать размер элементов каждого аргумента командной строки, переданного в массиве argv. Простой код выглядит следующим образом.Количество элементов аргументов командной строки
#include <stdio.h>
int main(int argc, char *argv[])
{
int i = 0;
for (i = 0; i < argc; i++)
{
printf("%lu\n", sizeof(argv[i]));
}
return 0;
}
Я понимаю, что это неправильно и что «argv» представляет собой массив указателей на строку. Я также попытался добавить звездочку, но в результате она вернула «1» (байт), потому что я сказал «перейдите на этот адрес» и показал мне размер первого элемента каждого аргумента командной строки. Итак, как я могу решить эту проблему без многих и многих циклов, только с функцией «sizeof»?
UPD: Извините за ошибку "% s". В фактическом коде я его не писал.
И я понимаю, что sizeof() не приносит мне размер массива. Я указывал на комбинацию «sizeof()/sizeof (char)»
Также большое спасибо за напоминание «strlen». Я сейчас учусь. Я еще не знаю языка C. Извините, за мои глупые ошибки.
Что вы подразумеваете под «размером элементов каждого аргумента командной строки»? Можете ли вы привести пример? –
Вы должны использовать функцию, которая дает длину c-строки, sizeof всегда будет возвращать размер указателя. – Borgleader
'sizeof' is * not * предназначен для указания размера строки. Фактически 'sizeof' оценивается во время компиляции, чтобы он вообще не работал. Вместо этого используйте 'strlen' (в cstring) или' std :: string :: size' (в строке). – Caninonos