•输入一个字符串,请按长度为8拆分每个输入字符串并进行输出;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
#include <stdio.h> #include <string.h> int main() { char str[9] = ""; while (1) { char tmp[9] = "00000000"; str[sizeof(str) - 1] = '\0'; // 最多获取 8 个输入,超过 8 个的输入下次 scanf 获取 if (scanf("%8s", str) == EOF) break; strncpy(tmp, str, strlen(str)); printf("%s\n", tmp); } return 0; }
#include <stdio.h> #include <string.h> int main() { char s[101]; int j; int count = 0; scanf("%s", s); int len = strlen(s); for (int i = 1; i <= len / 8 + 1; i++) { count = 0; for ( j = 7 * (i - 1); j <= 7 * i; j++) { printf("%c", s[j]); if (s[j]=='\0') { break; } count++; } if (count != 8) { for (int q = count; q < 8; q++) printf("0"); } printf("\n"); } return 0; }w为啥本地ide是对的 然后 网站是错的啊
#include <stdio.h> #include <string.h> int main(){ char str[100]; char str1[8]; while(scanf("%8s",&str)!=EOF) { printf("%s\n",str); strcpy(str1,str); memset(str,'0',8); memmove(str,str1,strlen(str1));//如果是100的放在8的头上有问题 printf("%s\n",str); } }各位大佬,我这个大于等于8的字符串的时候就报错,为什么呀?
#include <stdio.h> #include <string.h> int main() { char str[101] = {0}, *p; fgets(str, 101, stdin); if (strlen(str) < 100) { str[strlen(str) - 1] = '\0'; } int i = 1; p = str; while (*p) { if (i == 9) { printf("\n"); i = 1; } printf("%c", *p); i++; *p++; } for (i ; i <= 8 ; i++) printf("0"); return 0; }
#include <stdio.h> #include <string.h> void spolit(char* s) { int len = strlen(s); int sum0 = len % 8 == 0 ? 0 : 8 - (len % 8); for (int i = 0; i < len + sum0; i++) { printf("%c", i < len ? s[i] : '0'); if ((i + 1) % 8 == 0) { printf("\n"); } } } int main() { char s[101]; while (scanf("%s", s) != EOF) { spolit(s); } return 0; }
#include <stdio.h> int main() { char s[108]; char s1[9]; gets(s); int i = 0,j = 0,m = 0; int k =0; while (s[k]!='\0') { k++; } if (s[0] == '\0') { return 0; } m = i+7; while(s[m]!='\0'){ for (j=0; j<8; ) { s1[j++] = s[i++] ; } s1[8] = '\0'; printf("%s\n",s1); m = i+7; } if (k%8==0) { return 0; } for (j = 0; j<8;) { if(s[i]!='\0')s1[j++] = s[i++] ; else s1[j++] = '0'; } s1[8] = '\0'; printf("%s",s1); return 0; }
#include<stdio.h> #include<string.h> int main() { char str[100] = { 0 }; int i = 0; int j = 0; gets(str); int len = strlen(str); while (len % 8 != 0) { str[len] = '0'; len++; } /*for (int k = 0; k < len; k++) { printf("%c", str[k]); } printf("%d", len);*/ for (i = 0; i < len / 8; i++) { j = 0; for (j = 0; j < 8; j++) { printf("%c", str[i * 8 + j]); } printf("\n"); } return 0; }
#include <stdio.h> #include"string.h" int main() { char a[101]; char b[9]={0}; scanf("%[^\n]", &a); char*s =a; int x=(strlen(a))/8; int y=(strlen(a))%8; for(int i=0;i<x;i++) { memcpy(b,s,8); printf("%s\n",b); s=s+8; } if(y) { memset(b,0x30,8); memcpy(b,s,y); printf("%s",b); } return 0; }测试存在bug 直接提交能过 无语了
/** 题目:HJ4 字符串分隔 * 思路:每8个字符输出一个 "\n",最后一个字符串缺几个0补几个0 * 难点:个人认为是如何 缺0补0 */ #include <stdio.h> #include <string.h> int main() { char str[101]; int len; gets(str); len = strlen(str); // 每输出8个字符输出一个"\n" for(int i = 0; i < len; i++) { printf("%c", str[i]); if( (i + 1) % 8 == 0) { printf("\n"); } } // 最后输出的字符串缺0补0 for(int j = 0; j < 8 - len % 8; j++) { if(len % 8 == 0) { break; } printf("0"); } return 0; }
#include <stdio.h> #include <string.h> int main() { char str[101]; int len, i, j, num; scanf("%s", str); len = strlen(str); if (len % 8 == 0) { num = len / 8; } else { num = len / 8 + 1; } for (i = 0; i <= num - 1; i++) { for (j = 8 * i; j <= 8 * i + 7; j++) { if (j >= len) printf("0"); else printf("%c", str[j]); } printf("\n"); } return 0; }