我有字符指標輸入,并為它設定了 50 個位元組的記憶體。在我使用 scanf 從鍵盤獲取輸入后,例如“apple”,然后我假設剩余的空格用空字符填充。如果是這樣,我如何獲取所有字符或記憶體位置,包括空字符的位置。有什么辦法嗎?
int main() {
char *input;
int size;
input = (char *)malloc(50);
printf("%s\n", "enter something:");
scanf("%s", input);
size = strlen(input) 1;
uj5u.com熱心網友回復:
字串操作函式處理字串。如果您想將字符陣列視為字符陣列而不是字串,請避免使用字串函式(通常是那些命名為 的函式str*)。例如:
#include <stdio.h>
int
main(int argc, char **argv)
{
char input[50] = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw";
printf("%s\n", "enter something:");
if( 1 == scanf("Is", input)) {
fwrite(input, sizeof(char), sizeof input, stdout);
putchar('\n');
}
return 0;
}
請注意,如果您希望查看此資料,則可能無法很好地呈現不可列印的字符。特別是在終端查看資料時,scanf 寫入的空字符可能會造成一些混亂。天啊。
uj5u.com熱心網友回復:
或例如“蘋果”,然后我假設剩余的空格用空字符填充
你的假設是錯誤的。陣列中的所有其他元素都具有破壞值。
如何獲取所有字符或記憶體位置,包括空字符的位置。有什么辦法嗎?
您不能使用任何字串函式訪問空字符以外的字符。但是您可以將它們作為陣列的“普通”元素訪問
int main() {
char *input;
int size;
input = (char *)malloc(50);
printf("%s\n", "enter something:");
scanf("%s", input);
for(size_t i = 0; i < 50; i )
{
printf("Char no [%zu] is 0xx = %s\n", i, input[i], (input[i] >= ' ' && input[i] < 127) ? (char[]){'\'', input[i], '\'', 0} : "not printable");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/375258.html
