所以,我想在 c 中創建一個程式,在其中輸入一個字串,然后輸出將是該字串中每個字符的 ascii 編號,由“-”分割。我幾乎完成了,然后我不知道如何洗掉代碼輸出中的最后一個“-”。exp。輸入:abc 輸出:97-98-99。這是我的代碼:
char s[1001];
scanf("%s",&s);
for(int i=0;s[i]!='\0';i ){
printf("%d-",s[i]);
}
return 0;
}
我的輸出:97-98-99-
uj5u.com熱心網友回復:
我們將使用三元運算子,通過檢查來檢查是否i是最后一個字符,這里是字串的長度,包括。這是一個視覺表示。'\0'i < len - 1len'\0'
注意:您的變數char s[1001]將衰減為指標(例外:sizeof運算子)。
一些改進:
- 不要使用
"%s", 使用"%<WIDTH>s", 以避免緩沖區溢位 - 用于
size_t遍歷陣列。 - 而不是使用bare
return 0;,而是使用return EXIT_SUCCESS;頭檔案中定義的stdlib.h。 - 總是檢查
scanf()輸入是否成功
最終代碼:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char s[1001] = {0};
if (scanf("00s", s) != 1)
{
perror("bad input");
return EXIT_FAILURE;
}
size_t len = strlen(s);
for (size_t i = 0; s[i]; i )
printf("%d%s", s[i], (i < len - 1) ? "-" : "");
puts("\n");
return EXIT_SUCCESS;
}
輸出:
Hello
72-101-108-108-111
uj5u.com熱心網友回復:
稍微重新排列你的邏輯:
for(int i=0;s[i]!='\0';i ){
if( i != 0 )
printf("-");
printf("%d",s[i]);
}
uj5u.com熱心網友回復:
檢查當前索引是否不是最后一個索引然后列印-,否則它是最后一個索引并列印newline
char s[1001];
scanf("%s",&s);
int len = 0;
for(;s[len]!='\0';len );
for(int i=0;i<len;i ){
printf("%d",s[i]);
if(i 1 != len)
printf("-")
else
printf("\n")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/452318.html
