Я хочу использовать следующий код, но без индексации массива с «[] []» и заменить его с указателямиИспользование указателей перебирать ARGV []
for (int i = 0; i < argc; i++) {
for (int j = 0; argv[i][j] != '\0'; j++) {
//code
}
}
Я знаю, что вы можете использовать указатели для перемещения массива, но я не уверен, как это сделать с неопределенной длиной во втором массиве, в этом случае строка из ввода. Поскольку каждый элемент argv [] может иметь разную длину, я хочу убедиться, что я могу правильно прочитать символы и узнать, когда заканчивается каждый элемент argv [], и начинается следующее.
Я ожидаю, что это будет что-то вроде: (. Если следующий заголовок основной неправильно, скажите, пожалуйста)
int main(int argc, char **argv) {
for (int i = 0; i < argc; i++) {
while(argv != '\0') {
//code
*argv+1;
}
//to skip null character
argv+1;
}
}
Вы, кажется, считаете, что 'argv' является непрерывным блоком памяти. Я не думаю, что это безопасное предположение. –
@CareyGregory - это право. Вы не можете просто предположить, что следующий элемент сразу после нулевого байта. Но вы можете смело предположить, что каждый элемент имеет одинаковый размер, поэтому можно с уверенностью предположить, что элементы находятся от 'argv' до' argv + argc-1'. – alvits