这可能会令人尴尬,但我们走了! 我有以下代码(如下所示),并假设采用int并将其转换为char字符串。 (我知道itoa()和snprintf,但我不想让它像这样工作。)一切似乎都能正常工作,直到我尝试打印它并且它没有为inttochar字符串显示任何内容。这可能只是我忽略的一些愚蠢...我得到以下结果:
CHAR1: 4334321
CHAR2: 1234334
CHAR3:
代码在这里:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int tester = 1234334; //Test value
char temp[10]; //Temporary string array.
char inttochar[10];
int t = 0;
//Reads int to array.
while(tester != 0){
temp[t] = (tester % 10) + '0';
tester /= 10;
t++;
}
temp[t] = '\0';
t = 0;
printf("CHAR1: %s\nCHAR2: ",temp);
//Reverses the string.
for(int j=strlen(temp); j>=0;j--){
inttochar[t] = temp[j];
printf("%c",inttochar[t]);
t++;
}
inttochar[t] = '\0';
t = 0;
printf("\nCHAR3: %s\n",inttochar);
}
答案 0 :(得分:1)
t=0;
for(int j=strlen(temp); j>=0;j--){
inttochar[t] = temp[j];
t++;
}
inttochar[t] = '\0';
一个人关闭。写一个“更好”(不需要j签名)的方法是:
t=0;
for(size_t j=strlen(temp); j-- > 0;){
inttochar[t++] = temp[j];
}
inttochar[t] = '\0';
答案 1 :(得分:1)
您应该从j=strlen(temp)-1
开始,否则您将\0
(temp[strlen(temp)]
中的内容)指定给inttochar[0]
。
答案 2 :(得分:1)
使用for循环进行反向迭代更容易:
for(int j=strlen(temp); j--; ){
inttochar[t] = temp[j];
printf("%c",inttochar[t]);
t++;
}
注意一次测试和减少。
这通常适用于反向迭代。