Google mapのURL https://www.google.com/maps/@35.6896342,139.6921007,15z から
緯度 double latitude、経度 double longitude、ズーム値 int zoom
を抽出して、各変数に代入して出力したいです。しかし条件として、
条件1:URLはコマンドライン引数から指定する
条件2:url.hのURL構造体は使用しない
条件3:strchr以外の文字列操作関数を使用しない
という条件が課せられています。とりあえず抽出するところまでは自分で書いてみたのですが、正直自信はないうえにmain関数内をどう書けばいいのかがわかりません。
どうかご教授いただけないでしょうか。
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <string.h> 4 5typedef struct{ 6char *service; 7char *host; 8double latitude; 9 double longitude; 10 int zoom; 11 12} URL; 13 14void parse_url(const char *url_str, URL *url){ 15 char *p = NULL; 16 char *host_path = calloc(strlen(url_str)+1, sizeof(char)); 17 18 p = strchr(host_path, '@'); 19 if(p == NULL) url->latitude = NULL; 20 else{ 21 url->latitude = calloc(strlen(p)+1, sizeof(char)); 22 url->latitude = atoi(p+1); 23 *p = '\0'; 24 } 25 p = strchr(host_path, ','); 26 if(p == NULL) url-> longitude = NULL; 27 else{ 28 url->longitude = calloc(strlen(p)+1, sizeof(char)); 29 url->longitude = atoi(p+1); 30 *p = '\0'; 31 } 32 p = strchr(host_path, ','); 33 if(p == NULL) url-> zoom = NULL; 34 else{ 35 url->zoom = calloc(strlen(p)+1, sizeof(char)); 36 url->zoom = atoi(p+1); 37 *p = '\0'; 38 } 39 40} 41 42 43int main(int argc, char *argv[]){ 44 45 46 47printf("緯度:%d 経度:%d ズーム値:%d\n", latitude, longitude, zoom); 48} 49 50
回答3件
あなたの回答
tips
プレビュー