Как я могу приблизиться к индексу одномерного массива в программировании на c?

#c #string

#c #строка

Вопрос:

 input
1 2
2 3
1 5
5 2
5 6
4 7
 

Если я получу 6 строк, включая пустые, я хочу изменить их на целые числа, такие как

 output
12
23
15
52
56
47
 

как я могу создать эту программу на языке си??

 int input_strings(int arraySize){
scanf("%d",amp;arraySize); 
char * names[arraySize];
char buffer[30]; 
int n = 0;
int l = 0;

while ( n < arraySize ) {
    scanf("%s", buffer);
   
    
    l = strlen(buffer);
    if (l > 0){
        char* newstrptr = (char*)malloc(sizeof(char) * (l   1));
        strcpy(newstrptr, buffer);
        names[n] =  newstrptr;
        n  ;
    } else {
        break;
    }
}



for(n=0;n<arraySize;n  ){
    printf("d: %sn", n, names[n]);
    free(names[n]);
}
return 0;
}
 

после этого кода появятся имена[0] ~ имена[5]
Первый вопрос, я хочу удалить пробел, который является 2-м индексом имен [0].
Например, names[0] = «1 2», и я хочу удалить и сделать «12».

Во-вторых, как я могу приблизиться ко 2-му индексу массива? Если new_names[0] = «12» , то как я могу приблизиться ко 2-му индексу new_names[0]? должен ли я использовать двумерный массив?

Ответ №1:

Отвечает ли это на ваш вопрос? (Я предполагаю, что ваши отдельные числа не могут содержать более 1 цифры)

Вопрос 1

 #include <stdio.h>
int main() {
    char * str = malloc(4);
    strcpy(str, "1 2");
    str[1] = str[2];
    str[2] = 0;
    printf("%sn", str); //==> "12"
    free(str);
    return 0;
}
 

Вопрос 2

 #include <stdio.h>
int main() {
    char * str = "12";
    int n = str[1] - '0';
    printf("%dn", n); //==> 2
    return 0;
}
 

Комментарии:

1. Спасибо!! Но я хочу иметь дело с более чем одним отдельным числом . . . .

2. В этом случае вы должны объяснить, как вы планируете управлять этим: например, если у вас есть строка «231», каковы два числа: 23 и 1 или 2 и 31? И какова основная логика? Вы не можете ожидать решения проблемы, которую вы не полностью объясняете.