Как вы разбить строку:Расщепление строки в целые
char *mystring = "12345"
в целочисленный массив, который выглядит следующим образом:
[1, 2, 3, 4, 5]
Я пытался что-то вроде кода ниже, но я m не совсем уверен, насколько он надежный, и я думаю, что его легко сломать. Это код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(void) {
char *mystring = "12345";
int string_size, i, length;
string_size = strlen(mystring);
int values[string_size];
for (i = 0; mystring[i] != '\0'; i++) {
values[i] = mystring[i] - 48;
}
length = sizeof(values)/sizeof(*values);
for (i = 0; i < length; i++) {
printf("%d ", values[i]);
}
return 0;
}
Какие выходы:
1 2 3 4 5
Есть более C, как, как я могу это сделать?
Если ваш код «работает», подходящее место для запроса * улучшения * или * мнения *, то это [codereview.stackexchange.com] (http://codereview.stackexchange.com). – WhozCraig
«Есть ли еще C как я могу это сделать?» - Да: не используйте _magic numbers_! Почему '48', а не' '0''? Оба являются целыми числами. – Olaf
'int main (void) {const char * mystring =" 12345 "; const char * ptr = mystring; while (* ptr! = '\ 0') {putchar (* ptr ++); если (* ptr! = '\ 0') putchar (''); } putchar ('\ n'); return 0; } '? Или даже 'int main (void) {puts (" 1 2 3 4 5 "); return 0; } ' –