#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? И какова основная логика? Вы не можете ожидать решения проблемы, которую вы не полностью объясняете.