文字列の最後に '\ 0'を追加する方法を解明しようとしています。 私は既にforループから生成された配列 "number"を持っています。は、whileループがC言語で実行されたときに文字を割り当てることができません
int i=0;
int j=0;
char s[] = "123.45e-10";
while (s[i] != '\0') {
if (isdigit(s[i]) && eFound == false) {
number[j++] = s[i];
}
i++
}
は、私はこれを実行しようとしました:
i = 0;
while (isdigit(number[i])){
i++;
}
printf("%d", i);
number[i] = 'b';
私はコンパイルエラーを持っていませんが、プログラムのVisual Studioを実行している場合は
"デバッグアサーション失敗" と言います。
なぜこれはCではできませんか?
EDIT(全体のコードが追加された):
#pragma warning(disable:4996) //disables crt warnings
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include<string.h>
double stof(char s[]);
int main(){
char string[] = "123.45e-10";
stof(string);
}
double stof(char s[]) {
bool isNegative = false;
bool eFound = false;
int i = 0;
int j = 0;
int k = 0;
char number[10];
char potention[11];
int dotPosition;
while (s[i] != '\0') {
if (isdigit(s[i]) && eFound == false) {
number[j++] = s[i];
}
else if (s[i] == '.') {
dotPosition = i;
}
else if (s[i] == 'e' || s[i] == 'E')
eFound = true;
else if (s[i] == '-')
isNegative = true;
else if (eFound== true && isdigit(s[i])){
potention[k++] = s[i];
}
i++;
}
i = 0;
while (isdigit(number[i])){
i++;
}
printf("%d", i);
number[i] = 'b';
const int charSize = dotPosition;
int potentionN = atoi(potention);
char beforeDecimal[sizeof(number)];
char addedNulls[20];
int g = 0;
if (isNegative == true) {
strncpy(beforeDecimal, number, dotPosition);
int addNull = potentionN - sizeof(beforeDecimal);
printf("%d", addNull);
while (g < addNull) {
addedNulls[g] = '0';
g++;
}
printf("%d", strlen(addedNulls));
}
return 0.0;
}
「数値」とは何ですか?なぜ重要な情報を差し控えますか? –
このコードはコンパイルされません。 'number'や' eFound'の宣言はなく、 'asserts'もありません。あなたは[最小限の、完全で、かつ証明可能な例を作ることができますか?](http://stackoverflow.com/help/mcve)? – giusti
私は数年間でCを書いていません。その文字列を割り当てるだけの正当なchar []宣言ですか? –