こんにちは、誰かがこのコードの問題点を指摘してくれませんか?
#include <stdio.h>
int convstrg(char* str) {
int output = 0;
char* p = str;
for (int i=0;str[i]!='\0';i++) {
char c = *p++;
if (c < '0' || c > '9')
continue;
output *= 10;
output += c - '0';
}
return output;
}
int main(){
char x[] = "1xx23";
printf("%d\n", convstrg(x));
return 0;
}
出力が文字列整数の場合、コードは整数を返す必要があります。しかし、0などの奇妙な数字を取得しているようです。
これはいくつかのテストケースであり、一部は機能し、一部は機能しませんでした
"123" -> 123
"23xyz" -> 23
"" -> 0
"abc" -> 0
"-1" -> -1
ありがとう
編集
さて、負の文字列を除いてすべてのケースを整理します..