我得到一串数字,例如:1234567我想得到离开只有4位数从右到左。输出示例:4567我尝试使用格式化字符串,并且我还使用“atoi”来尝试像处理整数一样处理它,但我没有成功这是我的尝试之一:
int main() { char val[20]="1234567"; int num; num = atoi(val); sprintf(val, "%-4d", num); printf("%s", val); return 0; }
9wbgstp71#
你可以试试这个,我不认为阿托依会像你想的那样工作编辑:以前的答案不起作用,所以试试这个。
#include <stdio.h> #include <string.h> void truncStr(char* str, int xlen) { int length = strlen(str); if (length > xlen) { memmove(str, str + (length - xlen), xlen + 1); } } int main() { char str[] = "1234567"; int xlen = 4; printf("Before truncation: %s\n", str); truncStr(str, xlen); printf("After truncation: %s\n", str); return 0; }
huwehgph2#
别用绳子。解析后用数字做。
int main() { char val[20]="1233456"; int num; num = atoi(val); sprintf(val, "%-4d", num % 10000); printf("%s", val); return 0; }
h9a6wy2h3#
就像这样
printf("%s", val + 3);
或者计算出的偏移量(如果需要右边的四位数)。
int offset = (int)strlen(val) - 4; if(offset < 0) offset = 0; printf("%s", val + offset);
2hh7jdfx4#
如果要更改包含这样的字符串的字符数组
char val[20]="1233456";
并希望数组包含其最后四个(或其他数字)字符,然后只需写入
#include <string.h> //... size_t n = strlen( val ); if ( n > 4 ) memmove( val, val + n - 4, 5 );
这是一个演示程序
#include <stdio.h> #include <string.h> int main( void ) { char val[20] = "1233456"; size_t last_n = 4; size_t len = strlen( val ); if (len > last_n) memmove( val, val + len - last_n, last_n + 1 ); puts( val ); }
程序输出为
3456
您可以编写一个单独的函数来完成该任务,例如
#include <stdio.h> #include <string.h> char *last_n( char *s, size_t n ) { size_t len = strlen( s ); if (len > n) memmove( s, s + len - n, n + 1 ); return s; } int main( void ) { char val[20] = "1233456"; puts( last_n( val, 4 ) ); }
总是尝试编写更通用的代码。例如,如果数组包含一个不能用int类型的数字表示的数字序列,那么使用函数atoi的方法将不起作用。
int
atoi
nom7f22z5#
当你得到一个字符串形式的数字时,我猜它会是一个很大的数字。您可以返回另一个仅包含最后4位数字的字符串。
#include <stdio.h> #include <string.h> int main() { char val[20]="1233456"; int length = strlen(val); char output[5]; int outputLength = 0; for(int i = length - 4; i < length; i++) { output[outputLength++] = val[i]; } output[outputLength] = '\0'; printf("%s", output); return 0; }
5条答案
按热度按时间9wbgstp71#
你可以试试这个,我不认为阿托依会像你想的那样工作
编辑:以前的答案不起作用,所以试试这个。
huwehgph2#
别用绳子。解析后用数字做。
h9a6wy2h3#
就像这样
或者计算出的偏移量(如果需要右边的四位数)。
2hh7jdfx4#
如果要更改包含这样的字符串的字符数组
并希望数组包含其最后四个(或其他数字)字符,然后只需写入
这是一个演示程序
程序输出为
您可以编写一个单独的函数来完成该任务,例如
总是尝试编写更通用的代码。
例如,如果数组包含一个不能用
int
类型的数字表示的数字序列,那么使用函数atoi
的方法将不起作用。nom7f22z5#
当你得到一个字符串形式的数字时,我猜它会是一个很大的数字。您可以返回另一个仅包含最后4位数字的字符串。