1、代碼片段
int main(){
char text[TXTLEN], key[TXTLEN];
printf("Please input key(8 bytes):");
scanf("%s",key);
getchar();
printf("%s\n",key);
printf("Please input text(8 bytes):");
scanf("%s",text);
getchar();
printf("%s\n",text);
printf("(%s)%d,(%s)%d\n", key, get_str_len(key),text, get_str_len(text));
}
int get_str_len(char* str){
int i=0;
while(str[i++]);
return i-1;
}
你覺得輸出會是怎么樣?
如下:
Please input key(8 bytes):security
security
Please input text(8 bytes):computer
computer
(securitycomputer)16,(computer)8
Process returned 0 (0x0) execution time : 17.466 s
Press any key to continue.
就十分奇怪:
這個key莫名其妙就變成16了????
uj5u.com熱心網友回復:
親測沒問題呢,結構都是8;樓主的代碼沒有定義TXTLEN的長度,可能在別處定義了,沒有發出來。如果這個TXTLEN定義8,那么是可能是16的。
uj5u.com熱心網友回復:
自測時用的TXTLEN是32
uj5u.com熱心網友回復:
#include <stdio.h>
#include <string.h>
const int TXTLEN=8;
int main(){
char text[TXTLEN+1], key[TXTLEN+1];
rewind(stdin);
printf("Please input key(%d bytes):",TXTLEN);
fgets(key,TXTLEN+1,stdin);
if ('\n'==key[strlen(key)-1]) key[strlen(key)-1]=0;
printf("%s\n",key);
rewind(stdin);
printf("Please input text(%d bytes):",TXTLEN);
fgets(text,TXTLEN+1,stdin);
if ('\n'==text[strlen(text)-1]) text[strlen(text)-1]=0;
printf("%s\n",text);
printf("(%s)%d,(%s)%d\n", key, strlen(key),text, strlen(text));
return 0;
}
//Please input key(8 bytes):123456789
//12345678
//Please input text(8 bytes):123456789
//12345678
//(12345678)8,(12345678)8
//
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/203955.html
標籤:C語言
